预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共47页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第五章语法制导翻译及中间代码生成5.1引言5.1引言(续)文法符号及其语义属性本章内容简介5.2属性文法与属性翻译文法5.2.1语义属性与属性文法属性依赖关系加注语法树当上述过程结束时,整个表达式的值将留于栈顶。 A+B*C ABC*+ ①开始符号的继承属性具有指定的初始值; E→T {E. intOp,arg1,arg2,Result; 根据DT(T)所构造的关系图称为依赖关系图(或简称为依赖图)。 每遇一个二元(或一元)运算符时,就取出栈顶的两个(或一个)运算对象进行相应的运算,并用运算结果去替换栈顶的这两(或一)个运算对象; intGEN(intOp,intArg1,intArg2,intResult)根据所给实参产生一个四元式:(Op,Arg1,Arg2,Result),且送入四元式表中,返回值为该四元式的序号。 插入语义动作后,翻译文法产生式的一般形式为:A→({statement;})*∈V* ⒊intEntry(char*Name)—以Name为名字查、填符号表: 中的布尔表达式E的翻译。 本章要讨论的中间代码生成,是指把单词符号串形式的源程序转换为另一种等价的便于代码优化处理和目标代码生成表示。 akm)∈R(p),0≤kj≤n} 可见,对于三种常见逻辑运算,可作如下等价的解释: Expr’→+Term{WriteCode(“+”);}Expr’ 而且,我们还把语义动作视为翻译文法中的一个“符号”,称为动作符号。 ifEthenS1elseS2或whileEdoS属性文法(续)简单赋值语句文法的属性文法属性依赖关系依赖关系图翻译文法的定义将其另一链FC(TC)作为产生式左部符号的综合属性FC(TC)传播之。 并将它送入三元式表中,其返回值为表中序号。 属性可表征诸如数、符号串、类型、存储空间和其它需表征的实体。 3.对一动作符号而言,其综合属性之值是以该动作符号的继承属性或产生式右部符号的任意属性为变元的函数。 {if(CurrentToken==‘+’) E→T {E. |Expr^Expr{$$. ⒈所有非终结符只具有综合属性; 其中,(i)为三元式的编号,也代表了该式的运算结果; Arg1或Arg2为零时表示该参数缺省 (jrop,A1,A2,p)当关系A1ropA2成立时,转向第p四元式; iden|idenRopiden|(Expr) 这种模式既把语法分析与语义处理分开,又令其平行地进行,让其在同一遍扫描中同时完成语法分析和语义处理两项工作。递归下降分析中的翻译文法属性翻译文法的定义对属性文法的一些限制方法符号属性的求值顺序表达式属性翻译文法S-属性文法的定义S-属性文法的例子5.3常见中间语言简介5.3.1逆波兰表示逆波兰式的特点5.3.2四元式和三元式四元式的格式三元式翻译程序中使用的辅助函数翻译程序中使用的辅助函数(续)三元式和四元式之异同5.4简单算术表达式和赋值语句的翻译赋值语句的S-属性翻译文法布尔表达式的翻译布尔表达式的等价解释2属性文法与属性翻译文法 Term→FactorTerm’ Xn的综合属性(∈AS(Xn),进入Xn的子树后,返回时求出); 根据DT(T)所构造的关系图称为依赖关系图(或简称为依赖图)。 |Expr^Expr{$$. ⒊在一个产生式中,若某个文法符号X具有继承属性,则此继承属性之值仅依赖于该产生式右部且位于X左边的符号之属性。 四元式是一种“三地址语句”的等价表示。 A∧B∨C的四元式序列及其TC链和FC链 属性可表征诸如数、符号串、类型、存储空间和其它需表征的实体。 文法符号X的语义信息我们称之为语义属性或简称为属性(Attributes)。 Term→FactorTerm’ 在这类语句中,布尔表达式仅用于对程序流程进行控制。 语义变量及辅助语义函数 |Expr*Expr struct_Quadruple{ akm)∈R(p),0≤kj≤n}控制语句中的布尔表达式布尔表达式真假值的确定条件语句的翻译结果拉链与回填布尔表达式的真假出口链文法的“拆分”语义变量及辅助语义函数翻译布尔表达式的属性文法布尔表达式的属性