如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
本章主要介绍:(1)属性属性分为两类:继承属性其计算规则按“自上而下”方式进行,即规则右部符号的某些属性根据其左部符号的属性和(或)右部其他符号的某些属性计算而得。(2)属性文法语法制导翻译法的基本思想(语义子程序)语法制导翻译法为文法每一产生式设计相应的求值的语义描述(语义动作):E.val=47语法制导翻译技术分为:LR分析制导的具体实现方法:扩充LR分析栈,以便存放文法符号对应的语义值例如,设有简单算术表达式的文法:2.为上述文法构造LR分析表如下图:自下而上语法制导翻译法的特点:编译中常见的中间语言:逆波兰式逆波兰式表示法同中缀表示法相比其优点是:逆波兰式ab+c*的处理过程如下图:逆波兰形式可以推广到其他语法结构:LR分析制导生成逆波兰式:LR分析制导生成逆波兰式例如:(3)给出从源结构到目标结构的变换方法E→E+E|E*E|(E)|i2.为上述文法构造LR分析表如下图:三元式主要由三部分组成:例如a+b*c的三元式序列:1.三元式出现的顺序和语法成份的计值顺序相一致。间接三元式例如语句树形表示四元式主要由四部分组成:例如X=a*b+c/d的四元式序列:2.四元式之间的联系是通过临时变量实现的,这样易于调整和变动四元式。例如X=a*b+c/d的四元式序列:简单算术表达式和赋值语句到四元式的翻译A→i=E语义函数emit(T=arg1OParg2)(2)不进符号表,临时变量单词值部分用整数码表示。语义过程Lookup(i.name)利用以上定义的语义变量和函数等,写出每一个规则式的语义动作如下:2.E→E(1)+E(2)4.E→(E(1))简单算术表达式和赋值语句到四元式的翻译1.简单算术表达式的逆波兰式和四元式的表示t1=@ai↑(i/(i–i))的逆波兰式2.编译中常用的中间代码:4.采用自下而上的语法制导翻译法语义动作的设计例1.设文法及其相应的语义动作如下:分析:首先对输入串bR/bTc/bSc/ac画出语法树:S→bTc{print“1”}R→R/S例2令S.val为文法G[S]生成的二进制数的值,例如对输入串101.101,则S.val=5.625按照语法制导翻译方法的思想,给出计算S.val的相应的语义动作。分析首先搞清楚源结构和目标结构再考虑归约时执行相应语义动作(5)简单算术表达式翻译到四元式的语义描述