波兰表示
前 / 后序遍历表达式树
逆波兰构建算法

三 / 四元式
- 直接三元
- 间接三元
- 四元式
语法制导翻译
翻译文法:后缀表达式 → 逆波兰
方法:插入动作符号
属性翻译文法
- 综合属性
- 自右向左,自底而上赋值
- 继承属性
- 反向
L-ATG
- 要求是LL(1)
- 综合属性
- 右:下面推
- 左:右部综合属性推
- 继承
- 右:左部的继承属性 + 右部中位于符号左边的任意属性
- 左:上面推
SL-ATG
- 在L-ATG的基础上,最右继承属性和最左综合属性的值是常量(算出来确定的)
- 通过添加动作序列,进行变量计算后将结果赋给某属性
中间代码生成
- 声明语句
- 填表
- 数组声明:记录维数
- 函数声明:要填参数表,累计参数个数

- 表达式
- 简单值的计算和读入
- 逆波兰处理,
- 类型检查
- 根据已知类型的变量推断
- 数组
- 不断读入维数,判断越界问题并计算VP(i)(即这目标数组位置的某一维的起始位置相对于LOC的offset),最终找到最后的偏移,拿到LOC[offset]放到栈顶
- k是从大到小迭代计算的,注意P(k)计算
- 逻辑表达式
- 赋值
- 判断变量为左值还是右值
- 控制流
- 注意打标签
