您所在位置: 网站首页 / 语法制导翻译技术知识课件.ppt / 文档详情
语法制导翻译技术知识课件.ppt 立即下载
2024-12-03
约1.9千字
约65页
0
748KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

语法制导翻译技术知识课件.ppt

语法制导翻译技术知识课件.ppt

预览

免费试读已结束,剩余 60 页请下载文档后查看

10 金币

下载文档

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

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

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

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

语义分析的任务:例如:目前多数编译程序进行语义分析的方法是采用语法制导翻译法。它不是一种形式系统,但它比较接近形式化。(1)属性继承属性其计算规则按“自上而下”方式进行,即规则右部符号的某些属性根据其左部符号的属性和(或)右部其他符号的某些属性计算而得。(2)属性文法这些语义规则附在文法的每个产生式上,在语法分析过程中,执行语义规则描述的动作,从而实现语义处理。也就是说,附在文法的每个产生式上语义规则描述了语义处理的加工动作。G:E→E+T|TT→T*F|FF→(E)|i



G:D→TLT→integer|realL→L,id|id5.3语法制导翻译概述S→……(2)语法制导翻译法为文法每一产生式设计相应的求值的语义描述(语义动作):1.E→E(1)+E(2)	5.4编译中常用的中间代码:逆波兰式逆波兰式表示法同中缀表示法相比其优点是:一般表达式计值时,要处理两类符号,一类是运算对象,另一类是运算符,通常用两个工作栈分别处理。但处理用逆波兰式表示的表达式却只用一个工作栈。当计算机自左到右顺序扫描逆兰波式时,若当前符号是运算对象则进栈,若当前符号是运算符,设为K元运算符,则将栈顶的K个元素依次取出,同时进行K元运算,并将运算结果置于栈顶,表达式处理完毕时,其计算结果自然呈现在栈顶。逆波兰式ab+c*的处理过程如下图:逆波兰形式可以推广到其他语法结构:三元式和树形表示例如a+b*c的三元式序列:1.三元式出现的顺序和语法成份的
计值顺序相一致。间接三元式例如语句树形表示四元式主要由四部分组成:四元式的第四个分量result是编译程序为存放中间运算结果而临时引进的变量,常称为临时变量,如Ti,也可以是用户自定义变量,如X。2.四元式之间的联系是通过临时变量实
现的,这样易于调整和变动四元式。编译系统中,有时将四元式表示成另一种更直观,更易理解的形式——三地址代码或三地址语句。例如X=a*b+c/d的四元式序列:例1.–a+b*(–c+d)的逆波兰式t1=@ai↑(i/(i–i))的逆波兰式语义函数emit(T=arg1OParg2)(2)不进符号表,临时变量单词值部
分用整数码表示。语义过程Lookup(i.name)1.E→E(1)+E(2)4.E→i5.5.2布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译3.E→(E(1))布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译(1)真出口和假出口:(2)作为条件转移的E,把E翻译成的代码
是一串条件转或无条件转的四元式布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式到四元式的翻译布尔表达式语义动作的设计布尔表达式语义动作的设计布尔表达式到四元式的翻译布尔表达式到四元式的翻译5.5.3控制语句的翻译
C→ifEthenS→CS(1)
2、双分支if语句:
C→ifEthenTP→CS(1)elseS→TPS(2)
C→ifEthen{backpatch(E.true,nextq);
C.chain=E.false}
TP→CS(1)else{q=nextq;emit(goto0);①
TP.chain=merge(S(1).chain,q);
Backpatch(C.chain,nextq)②}
S→TPS(2){S.chain=merge(TP.chain,				S(2).chain)}

例:ifx>ythenx=x+1elsey=y+1
ifAvB<Cthenx=x+Belsex=x+C
3、条件循环语句:
w→whilewd→wEdoS→wdS(1)
w→while{w.bcode=nextq}
wd→wEdo{backpatch(E.true,nextq);
wd.chain=E.false;
wd.bcode=w.bcode}
S→wdS(1){emit(gotowd.bcode);
Backpatch(S(1).chain,wd.bcode);
S.chain=wd.chain}
例:whilex+y>3doa=a+3*b
whileA∨B<Ddoif(x>6)thenx=x-1elsey=x+1

4、语句组:
L→LsSLs→L;L→S
L→S{L.chain=S.chain}
Ls→L;{backpatch(L.chain,nextq)}
L→LsS{L.chain=S.chain}
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

语法制导翻译技术知识课件

文档大小:748KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用