lgyby语法制导翻译和中间代码生成

lgyby语法制导翻译和中间代码生成

ID:39970213

大小:239.00 KB

页数:47页

时间:2019-07-16

lgyby语法制导翻译和中间代码生成_第1页
lgyby语法制导翻译和中间代码生成_第2页
lgyby语法制导翻译和中间代码生成_第3页
lgyby语法制导翻译和中间代码生成_第4页
lgyby语法制导翻译和中间代码生成_第5页
资源描述:

《lgyby语法制导翻译和中间代码生成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章语法制导翻译和中间代码生成赖国勇攀枝花学院计算机学院本章内容重点难点教学要求教学内容:语义分析概述;属性文法;中间代码生成。重点:三种中间语言:四元式、三元式、逆波兰式。难点:三种中间语言:四元式、三元式、逆波兰式。教学要求1、了解:属性文法。2、理解:语义分析的功能。3、掌握:逆波兰式、三元式和树形表示、四元式。2赖国勇第8章_目录8.1语义处理概述8.2属性文法,语法制导翻译8.3中间代码3赖国勇语义分析的基础1、语义分析的内容?2、静态语义分析的主要任务?3、动态语义分析的主要任务?4、语义的形式化描述?4赖国勇源语言程序中间代码汇编代码词法分析语义分析语法分

2、析中间代码生成代码生成在编译中的逻辑阶段前端处理后端处理语义处理语义处理(语义分析和中间代码生成)5赖国勇语言的语义和编译的语义处理工作静态语义:语法规则的良形式条件。静态语义检查:审查静态语义。动态语义:程序单元执行的操作。动态语义处理:生成中间(目标)代码。6赖国勇8.1语义处理概述编译阶段-语义处理编译阶段语义处理语法分析后的源程序程序设计语言的语义静态语义是对程序约束的描述,这些约束无法通过抽象语法规则来妥善地描述,实质上就是语法规则的良形式条件,它可以分为类型规则和作用域/可见性规则两大类。例如:类型相容性,变量先声明后引用,名称相关要求。动态语义程序单位描述的

3、计算。编译程序的语义处理工作静态语义审查。解释执行动态语义。8.18赖国勇静态语义审查1、类型检查。2、控制流检查。控制流语句必须使控制转移到合法的地方。3、一致性检查。4、上下文相关性检查。5、名字的作用域分析。8.19赖国勇解释执行动态语义(计算)生成代码(中间代码或目标代码)8.110赖国勇例8.18.111赖国勇语义处理的描述属性文法:描述语义规则。语法制导翻译:在语法分析的同时,执行语义子程序:检查静态语义。翻译(生成)中间(目标)代码。8.112赖国勇语义处理的描述-例8.2P→D;ED→D;D

4、id:TT→char

5、integer

6、array[num]ofT

7、

8、↑TE→literal

9、num

10、id

11、EmodE

12、E[E]

13、E↑P代表程序;D代表说明;E代表表达式。如程序语句:key:integer;String:char;keymod1999语言本身提供两种基本类型:char和integer。除此之外还有缺省的基本类型type_error和void。假定所有数组都从下标1开始8.113赖国勇确定标识符类型的语义描述(1)P→D;E(2)D→D;D(3)D→id:T{addtype(id.Entry,T.type)}(4)T→char{T.Type:=char}(5)T→integer{T.Type:=integer}(6)T→↑

14、T1{T.Type:=pointer(T1.type)}(7)T→array[num]ofT1{T.Type:=array(num.Val,T1.type)}8.114赖国勇类型检查的语义描述-例8.2S→id:=E{ifid.Type=E.TypeThenS.Type:=voidelseS.Type:=type_error}S→ifEthenS1{ifE.type=BooleanthenS.Type:=S1.typeelseS.type:=type_error}S→whileEdoS1{ifE.type=BooleanthenS.type:=S1.TypeelseS.t

15、ype:=type_error}8.115赖国勇静态语义分析的环境符号表(将在第9章详细讲述):为语义分析提供类型、作用域等信息。为代码生成提供类型、作用域、存储类别、存储(相对)位置等信息。8.116赖国勇8.2属性文法,语法制导翻译8.2.1属性文法8.2.2两种属性8.2.3属性计算方法8.2.4语法制导翻译8.2.1属性文法属性文法A(attributegrammar)是一个三元组:A=(G,V,F),其中:G:是一个上下文无关文法。V:有穷的属性集,每个属性与文法的一终结符或非终结符相联。F:关于属性的属性断言或谓词集。每个断言与一个产生式相联。而此断言只引用该

16、产生式左端或右端的终结符或非终结符相联的属性。18赖国勇属性文法属性文法是允许为每个终结符和非终结符配备一些属性的文法。它既能描述程序设计语言的语法,又为其语义描述提供了手段。属性文法由D.E.Knuth于1968年引进.后来才被用于编译程序的设计。8.219赖国勇例8.4属性文法表达式文法E—>T+T

17、TorTT—>n

18、bET1+T2{T1.type=intT2.type=T1.typeE.type:=int}ET1orT2{T1.type=boolT2.type=T1.typeE.type:=bool}Tn{T.ty

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。