目录
第五章 语法制导翻译
1.语法制导翻译概述
基本思想
1.为CFG中的文法符号设置语义属性,用来表示语法成分对应的语义信息
2.文法符号的语义属性值是用与文法符号所在产生式(语法规则)相关联的语义规则来计算的
3.对给定的输入串x,构建x的语法分析树,并利用与产生式(语法规则)相关联的语义规则来计算分析树中各结点对应的语义属性值
两个概念
语法制导定义——SDD
语法制导翻译方案——SDT
SDD与SDT
SDD
- 是关于语言翻译的高层次规格说明
- 隐蔽了许多具体实现细节,使用户不必显式地说明翻译发生的顺序
SDT
- 可以看作式对SDD的一种补充,是SDD的具体实施方案
- 县式地指明了语义规则的计算顺序,以便说明某些实现细节
2.语法制导定义SDD
- 将每个文法符号和一个语义属性集合相关联
- 将每个产生式和一组语义规则相关联,用来计算该产生式中各文法符号的属性值
文法符号的属性
-
综合属性
-
继承属性
3.SDD的求值顺序
语义规则建立了属性之间的依赖关系,在对语法分析树节点的一个属性求值之前,必须首先求出这个属性值所依赖的所有属性值
依赖图
4.S-属性定义与L-属性定义
S-属性定义
- 仅仅使用综合属性的SDD称为S属性的SDD,或S-属性定义、S-SDD
- 如果一个SDD是S属性的,可以按照语法分析树节点的任何自底向上顺序来计算它的各个属性值
- S-属性定义可以在自底向上的语法分析过程中实现
L-属性定义
- L-属性定义(也称为L属性的SDD或L-SDD)的
直观含义:在一个产生式所关联的各属性之间,
依赖图的边可以从左到右,但不能从右到左(因此称为L属性的,L是Left的首字母)
5.语法制导翻译方案SDT
语法制导翻译方案(SDT)是在产生式右部中嵌入了程序片段(称为语义动作)的CFG
SDT可以看作是SDD的具体实施方案
- 基本文法可以使用LR分析技术,且SDD是S属性的
- 基本文法可以使用LL分析技术,且SDD是L属性的
6.在非递归的预测分析过程中进行翻译
扩展语法分析栈
。。。
7.在递归的预测分析过程中进行翻译
8.L-属性定义的自底向上的翻译
第六章 中间代码生成
类型表达式的表示