编译原理—语义分析、语法制导翻译、翻译模式、中间代码生成
- 语法制导翻译
- 语法制导定义(属性文法)
- 翻译模式
- 后缀式
- 图示表示法
- 构建表达式的语法树
- 中间代码的种类
- 三地址码
- 四地址码
- 对比
- 举例
- 中间代码产生的场景
- 说明语句的翻译
- 举例
- 嵌套说明语句的翻译方案
- 相关定义
- 举例
- 过程嵌套声明
- 记录的说明
- 记录说明的翻译
- 记录域的偏移
- 举例
- 赋值语句的翻译
- 含简单变量的赋值语句的翻译
- 举例
- 数组元素的翻译
- 数组类型的声明
- 数组元素的地址计算
- 举例
- 输入串的分析树
- 翻译方案
- 举例
语法制导翻译
-
L属性文法包含S属性文法
- S属性:sythesis综合属性
- L属性:left to right继承属性
- LL属性一定是LR属性的 ,LL文法一定是LR文法的,可以用LL自顶向下的方法分析L属性文法,L属性文法中有一些是可以自下而上分析的,因此LR不一定能够解决L属性文法,LL可以解决的问题LR不一定能够解决
-
语法分析中进行静态语义检查和中间代码生成的技术称为语法制导翻译技术;
语法制导定义(属性文法)
- 引入语法制导定义的目的:
- 为了将语义属性关联到文法符号:
- 为了将语义规则关联到产生式:
- 有效地将语法和语义关联起来。
- 为相应的语法成分设置表示语义的属性,属性的值是可以计算的。
- 根据属性值计算的关联关系,将其分成综合属性和继承属性;
- 根据属性文法中所含的属性将属性文法分成:
- S-属性文法和L-属性文法;
翻译模式
- 不仅将语义属性关联到文法符号、将语义规则关联到产生式,而且还通过将语义动作嵌入到产生式的适当位置来表达该语义动作的执行时机。
- 翻译模式给语义分析的实现提供了更好的支持。
后缀式
图示表示法
构建表达式的语法树
中间代码的种类
三地址码
四地址码
对比
举例
中间代码产生的场景
说明语句的翻译
举例
嵌套说明语句的翻译方案
相关定义
举例
过程嵌套声明
记录的说明
记录说明的翻译
记录域的偏移
举例
赋值语句的翻译
含简单变量的赋值语句的翻译
举例
数组元素的翻译
数组类型的声明
数组元素的地址计算
举例
输入串的分析树
翻译方案
举例