37、栈机器原理与操作解析

栈机器原理与操作解析

1. 后缀表示法与运算符优先级

在处理赋值语句时,解析后可得到不同的后缀表示法。例如对于一个赋值语句,解析后得到后缀表示法 #XA B +C * =; 。这里有两个重要概念需要注意:
- 所有操作数的相对位置应保持不变。
- 后缀表示法中没有括号,运算符的位置由优先级决定。

在编译器设计中,存在两代编译器。第一代使用语法控制的运算符优先级解析,第二代使用基于语法的语法导向解析。语法导向解析遵循语法规则,更为可行且正确。编译器生成中间代码后,会将其转换为目标机器代码存储在目标模块中;而解释器则将中间代码存储在磁盘的目标模块中,后续可直接解释代码生成计算结果。

两种著名的语法导向解析技术是自顶向下和自底向上。对于哪种更好更直观,答案可能因人而异。不过,有人认为自顶向下更好,原因有二:一是语法和语言语句之间存在一对一的映射;二是编程语言 C 提供交互式输出,便于检查每个解析步骤后的打印输出,易于检测错误和维护代码。

解释器方法受欢迎的原因有两个:一是中间代码和操作环境与主机无关;二是中间代码可保存到磁盘的目标模块或数据文件中,后续可直接解释代码,无需再次进行翻译阶段。

运算符优先级的概念如下表所示,优先级按降序排列,括号优先级最高,赋值运算符优先级最低。
| 符号 | 描述 |
| — | — |
| () | 分组括号 |
| .NEG. | 取反 |
| .EXR | 指数运算 |
| *, / | 乘、除 |
| +, - | 加、减 |
| ” | 连接 |
| {.EO., .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值