- 1、本文档共87页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8章节语法制导翻译与中间代码生成
第8章
语法制导翻译与中间代码生成;8.1 属性文法;静态语义审查
(1)类型检查。根据类型相容性要求,验证程序中执行的每个操作是否遵守语言的类型系统的过程,编译程序必须报告不符合类型系统的信息。
(2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while、for或switch语句。如果不存在包括它的这样的语句,则就报错。; (3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次,同一case语句的标号不能相同,枚举类型的元素不能重复出现等等。
(4)上下文相关性检查。比如,变量名字必须先声明后引用;
(5)名字的作用域分析
解释执行动态语义
(计算)生成代码(中间代码或目标代码)
;例:有文法G[E]:
E → T1+T2 | T1 or T2
T → num|true|false
对输入串 2+6 语法树如图:;类型检查的属性文法:
E → T1+T2 {T1.t=int AND T2.t=int}
E → T1 or T2 {T1.t=bool AND T2.t=bool}
T → num {T.t:=int}
T → true {T.t:=bool}
T → false {T.t:=bool};属性文法,语法制导翻译;例如:定义表达式的文法如下: E?E+E E?(E)E?n 给出定义表达式值的属性文法。; 属性文法:允许为每个终结符和非终结符配备一些属性的文法.它既能描述程序设计语言的语法,又为其语义描述提供了手段.;属性分为两种:继承属性和综合属性. inherited and synthesized(derived)attribute 继承属性的计算规则由顶向下, 综合属性的计算规则由底向上.; ;3*5+4的带注释的分析树;继承属性; ; 8.2 语法制导概论; 基于属性文法的处理过程即语法制导翻译是这样的:
对符号串进行语法分析,构造语法树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各结点按语义规则进行计算。; 8.2.2 S-属性文法和自下而上翻译
一般的属性文法的翻译器很难建立,然而L-属性文法的翻译器很容易建立。;8.3 中间代码的形式;翻译方法可分为; 在产生语法制导翻译程序时,完全根据文法的产生式来生成的,有时为了达到语法制导的目的,不得不对现有产生式做一些修改,这也是语法制导方法的特点。;中间代码;中间代码的层次;不同层次的中间代码举例;8.3.1 逆波兰式; POS(E)=POS(E1)||POS(T)||?
其中“||”表示串的“捻接”。;例子:
pos(A+B*C)=pos(A)||pos(B*C)||+=ABC*+
pos(A*B+c)=pos(A*B)||pos(C)||+=AB*C+ ; 逆波兰式的优点:转换为逆波兰式的语言中间形式后,容易实现中间代码的翻译或目标指令。 ;.;a*(b+c/d)#;*(b+c/d)#;(b+c/d)#;b+c/d)#;+c/d)#;c/d)#;/d)#;d)#;)#;)#;)#;#;#;.;动画演示;8.3.2 表达式的三元式和树;例子: a:=b*c+b*d的相应三元组;tri(A*B+C/D)=
1:(*, A, B) A*B
2:(/, C, D) C/D
3:(+,①,②) A*B+C/D;5:(≥, X, 0) X≥0
6:(∨,⑤, B) X≥0∨B
7:(∧,⑥, D) (X≥0∨B)∧D
8:(∨,④,⑦);例: (a+b*(c-d))-e/f的树。;c;8.3.3 四元式; 1)(*,b,c,T1) b*c
2)(*,b, d,T2)b*d
3)(+,T1,T2,T3)b*c+b*d
4)(:=,T3,-,a)
下面是表达式四元式的形式定义。 ;FOUR(T)
(+,RES(E1),RES(T),TEMP)
RES(E)=TEMP(临时变量);FOUR(E)
RES(F)=RES(E) ; 引进一过程GENQT:
GENQT(ω):BEGIN
RESULT:=NEWTEMP;
QT[J]:=(ω,SEM[S-2],SEM[S-1],RESULT);
SEM[S-2]:=RESULT;
您可能关注的文档
- 7章节 无线通信接收技术.ppt
- 7章节 概率算法.ppt
- 7章节 特殊动画.ppt
- 7章节 数组.ppt
- 7章节 电子商务法律法规.ppt
- 7章节 电子商务安全技术.ppt
- 7章节 现代远程教育.ppt
- 7章节 简单控制系统.ppt
- 7章节 线程.ppt
- 7章节 网络安全技术.ppt
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)