编译原理学习笔记15——属性文法与语法制导翻译2
- 15.1 S-属性文法
- 15.2 L-属性文法
- 15.3 翻译模式
- 15.4 递归下降翻译器的设计
15.1 S-属性文法
S-属性文法的自下而上计算
S-属性文法的自下而上计算
- 在分析栈中增加附加域存放综合属性值
- 假设产生式A→XYZ对应的语义规则为a:=f(X.x,Y.y,Z.z)
S-属性文法的分析过程
15.2 L-属性文法
一遍扫描的处理方法
- 在语法分析的同时计算属性值
- 所采用的语法分析方法
- 属性的计算次序 视频区域
- S-属性文法适合一遍扫描的自下而上分析
- L-属性文法适合一遍扫描的自上而下分析
L-属性文法和自顶向下翻译
- 按照深度优先遍历语法树,计算所有属性值
- 与LL(1) 自上而下分析方法结合
- 深度优先建立语法树
- 按照语义规则计算属性
L-属性文法
测试:L-属性文法
15.3 翻译模式
翻译模式
翻译模式示例
设计翻译模式的原则
- 设计翻译模式时,必须保证当某个动作引用一 个属性时它必须是有定义的
- L-属性文法本身就能确保每个动作不会引用尚 未计算出来的属性
建立翻译模式
数学格式语言EQN
建立翻译模式
消除翻译模式中的左递归
15.4 递归下降翻译器的设计