- 21
- 0
- 约6.02千字
- 约 87页
- 2017-04-21 发布于湖北
- 举报
语法制导翻译与中间代码生成
语法制导翻译与中间代码生成;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;
您可能关注的文档
最近下载
- 中国心力衰竭诊断和治疗指南(2024版)解读PPT课件.pptx VIP
- 项目分包单位负责人、安全员考核面试实施办法.doc VIP
- 拖欠农民工工资专项整治自查报告.docx VIP
- 药品不良反应报告表.pdf VIP
- DB3707_T 066-2022 映霜红桃生产技术规程.docx VIP
- 北师大版小学三年级数学上册《去游乐园》名师课件.ppt VIP
- DB37_T 4528-2022 车辆管理窗口服务规范.docx VIP
- DB37_T 4517-2022 人民防空工程战时通风系统检测技术规范.docx VIP
- DB37_T 4508-2022 地下水超采综合治理评估技术指南.docx VIP
- DB37_T 4506-2022 河湖管护规范.docx VIP
原创力文档

文档评论(0)