2873.INTa语言解释器-夏令营

通过数:19提交数:32学校:复旦大学保研机试真题 题目列表 标签
题目描述 实现一个简单的编程语言解释器,用于执行INTa语言程序。该语言支持以下语句: 1. INTa:定义一个变量a(变量名为单个字母),初始值为0 2. a=exp:为变量a赋值,其中exp是表达式 3. PRINTexp:输出表达式exp的计算结果 4. IF exp...ENDIF:条件语句,如果exp的值非0,则执行IF和ENDIF之间的语句 表达式计算规则: 从左到右计算,不考虑运算符优先级 例如:${2+3 4}$ 计算为 ${(2+3) 4 = 20}$,而不是 ${2+(3 4) = 14}$ 例如:${5-3 2}$ 计算为 ${(5-3) 2 = 4}$,而不是 ${5-(3 2) = -1}$ 支持的操作符: ${+}$:加法 ${-}$:减法 ${ }$:乘法 ${/}$:整数除法(向0取整) ${\&}$:按位与 ^:按位异或 操作数类型: 立即数:0-999之间的整数 变量:单个字母(a-z) 除法规则:整数除法,向0取整 例如:${7/3 = 2}$,${-7/3 = -2}$ 按位运算:按照标准规则执行 作用域规则: 每个IF语句创建一个新的作用域 允许在不同作用域内重新定义变量: 在IF内部可以重新定义变量,这些变量在ENDIF后不再存在 外部作用域的变量在内部作用域可见,但可能被覆盖 变量查找规则: 从内层到外层依次查找变量 赋值时,修改最近作用域中已存在的变量,或在当前作用域定义新变量 程序执行规则: 语句按顺序执行 IF语句根据条件决定是否执行其内部语句 变量在定义前不可使用(假设输入总是合法的) 输入格式 多行字符串,表示INTa语言的程序 每行一个语句 语句类型包括: INTa:定义变量(a为单个字母) a=exp:赋值语句(a为单个字母) PRINTexp:打印语句 IF exp:条件开始 ENDIF:条件结束 输出格式 对于每个PRINT语句,输出表达式计算结果 每个结果占一行 数据范围 输入程序不超过100行 变量名均为单个小写字母(a-z) 立即数范围为0-999 输入样例1 INTa a=5 INTb b=3 PRINTa+b PRINTa-b PRINTa b PRINTa/b PRINTa&b PRINTa^b 输出样例1 8 2 15 1 1 6
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。