编译原理—语法制导翻译、S属性、L属性、自上而下、自下而上计算
- 1.语法制导翻译
- 1.1属性文法
- 1.2算术表达式的计数器
- 1.3属性的分类
- 1.4属性依赖图
- 继承属性的计算
- 1.5语义规则的计算方法
- 1.6属性计算次序
- 2. S属性定义
- 2.1 语法树与分析树
- 2.2 语法树与DAG
- 2.2.1构造表达式的语法树(DAG)
- 2.2.2属性结构树
- 2.2.3表达式的语法树
- 3.L-属性定义
- 3.1深度优先次序
- 3.2非L-属性定义的语法制导定义
- 3.3翻译方案中的动作
- 3.4翻译方案的书写
- 3.5类型说明的语法制导定义
- 3.5.1属性传递
- 3.6翻译方案的计算次序
- 4. S-属性定义的自底向上计算
- 4.1 属性栈与分析栈
- 4.2计算表达式的(栈)代码
- 4.3自底向上计算继承属性
- 5. C声明的翻译方案
- 5.1C声明的“代码段”
- 6. 模拟继承属性的计算
- 6.1引入标记非终结符
- 6.2 文字排版的语法制导定义
- 6.3文字排版的翻译方案
- 7. (L-属性定义)自顶向下翻译
- 7.1删除翻译方案中的左递归
- 7.2(递归下降)预测翻译器的设计
- 7.3递归翻译函数
1.语法制导翻译
1.1属性文法
1.2算术表达式的计数器
1.3属性的分类
1.4属性依赖图
继承属性的计算
1.5语义规则的计算方法
1.6属性计算次序
2. S属性定义
2.1 语法树与分析树
2.2 语法树与DAG
2.2.1构造表达式的语法树(DAG)
2.2.2属性结构树
2.2.3表达式的语法树
3.L-属性定义
3.1深度优先次序
3.2非L-属性定义的语法制导定义
3.3翻译方案中的动作
3.4翻译方案的书写
3.5类型说明的语法制导定义
3.5.1属性传递
3.6翻译方案的计算次序
4. S-属性定义的自底向上计算
4.1 属性栈与分析栈
4.2计算表达式的(栈)代码
黄色表示该属性就位于栈顶,省略栈代码
4.3自底向上计算继承属性
5. C声明的翻译方案
5.1C声明的“代码段”
6. 模拟继承属性的计算
6.1引入标记非终结符
6.2 文字排版的语法制导定义
6.3文字排版的翻译方案
7. (L-属性定义)自顶向下翻译
7.1删除翻译方案中的左递归
7.2(递归下降)预测翻译器的设计
7.3递归翻译函数