Chapt6_第6章 语法制导翻译技术.pptx

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第6章语法制导翻译技术Nocross,nocrown.不经历风雨,怎么见彩虹.

6.1翻译文法6.2语法制导翻译6.3自顶向下语法制导翻译6.4属性翻译文法6.5属性文法的自顶向下翻译6.6自底向上语法制导翻译第6章 语法制导翻译技术

语法制导翻译翻译文法、属性翻译文法及其应用学习重点

第6章 语法制导翻译技术例如下列Test语言代码:{inta;b=a+1;writeb;}语义:是程序设计语言中按语法规则所构成的各个语法成分的含义。一个源程序经历了词法分析与语法分析,表明它在书写上和语法上是正确的,但不能保证其在语义上是正确。语义分析的任务:分析程序的含义,并作相应的语义处理。

第6章 语法制导翻译技术语义分析的功能①确定类型:确定标识符所关联数据对象的数据类型(有时由词法分析完成)。②类型和运算合法性检查:检查运算的合法性与运算分量类型的一致性(或相容性),必要时作相应的类型转换。例如,a+b,要求a和b都是算术型(整型或实型),当a和b不是同一种类型时,需进行类型转换。③识别含义:确定程序中各构造成分组合到一起的含义,并作相应的语义处理。这时对可执行语句生成中间代码或目标代码。

第6章 语法制导翻译技术语义分析的功能④控制流检查:控制流语句必须转移到合法的地方。例如,在C语言中,break语句使得控制跳离包括该语句的while、for或switch语句,如果不存在包括它的这样的语句,则报告错误。⑤一致性检查:在很多程序设计语言中要求对象只能被说明一次。⑥其它语义检查:如对象的作用域等。

第6章 语法制导翻译技术语义分析的实现语义分析是以语法分析的输出(语法分析树或其它等价的内部中间表示)作为输入,输出则是中间代码,甚至是目标代码。一般情况下,语义分析仅产生中间代码,即语义分析与目标代码生成分成两遍来进行。

第6章 语法制导翻译技术语义往往是上下文有关的,只宜于用口语描述,语义形式化很困难。目前,比较流行的语义描述和语义处理方法是语法制导翻译技术。语法制导翻译技术?基础:形式描述的属性翻译文法?特点:把语法与语义分开,但又在语法分析的同时进行相应的语义工作?提高了实用性

6.1 翻译文法例:设计一个翻译器,它能将中缀表达式翻译成波兰后缀表达式。假设输入串是a+b*c,则翻译器输入串a+b*c输出串abc*+问题:如何实现这个翻译过程呢?先看输入串a+b*c的推导过程:中缀表达式文法:①E→E+T②E→T③T→T*F④T→F⑤F→(E)⑥F→a⑦F→b⑧F→cETE+TTE+T*FTE+T*cTE+F*cTE+b*cTT+b*cTF+b*cTa+b*c

由推导过程 ETE+TTE+T*FTE+T*cTE+F*cTE+b*cTT+b*cTF+b*cTa+b*c得到输入串的语法树:记住翻译目标是:abc*+EE+TTT*F添加叶子结点,用@表示输出操作(输出其后的字符)。EE+TTT*FEcFEc@cba@ab@b@*@+Fa将@符号的叶子结点从左到右连起来,得到@a@b@c@*@+(注意这种带有@的符号串称为动作序列。)执行这个符号序列,得到abc*+这就是翻译结果!

TFaEE +TT* FTE+TT*F@+@*EcFEc@cba@ab@b问题:如何得到这棵带动作符号的语法树呢?在中缀表达式文法(输入文法)的基础上加入动作符号,得到翻译文法。E⑤F→(E)①E→E+T②E→T ⑥F→a③T→T*F④T→F⑦F→b⑧F→c①E→E+T@+②E→T③T→T*F@*⑤F→(E)⑥F→a@a⑦F→b@b④T→F⑧F→c@c输入文法翻译文法

例用输入文法推导a+b*c的过程如下:ETE+TTE+T*FTE+T*cTE+F*cTE+b*cTT+b*cTF+b*cTa+b*c用翻译文法进行相同的推导:①E→E+T⑤F→(E)②E→T ⑥F→a③T→T*F④T→F①E→E+T@+②E→T③T→T*F@*⑤F→(E)⑥F→a@a⑦F→b@b⑦F→b⑧F→c ④T→F ⑧F→c@c输入文法翻译文法输入序列ETE+T@+TE+T*F@*@+TE+T*c@c@*@+TE+F*c@c@*@+TE+b@b*c@c@*@+TT+b@b*c@c@*@+TF+b@b*c@c@*@+Ta@a+b@b*c@c@*@+活动序列将活动序列中的输入序列去掉,得到动作序列:@a@b@c@*@+

翻译文法是上下文无关文法的推广,是在描述语言文法规则的右部适当位6置.加1入翻语义译动文作法得到的。为了区分文

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档