欢迎来到天天文库
浏览记录
ID:38938642
大小:336.00 KB
页数:57页
时间:2019-06-21
《《川师编译原理》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章语法制导翻译和中间代码生成教学目的:让学生了解语法制导翻译的基本思想,掌握中间代码的几种常用形式及表达式与基本语句的翻译方法。教学重点:中间代码形式、布尔表达式与赋值、控制语句的翻译。课时分配:4学时。教学过程:7/17/202118.1语法制导翻译概述1、语法制导翻译的概念在语法分析过程中根据各个规则所相联的语义动作或所对应的语义子程序进行翻译的办法。2、要求语法结构具有规定的语义。3、本质在进行语法分析的同时,完成相应的语义处理,关键是如何根据被识别出的语法成分进行语义处理。7/17/202124、语义分析的任务1)静态语义检查例:类型、运
2、算、维数、越界a+b-1*true2)动态语义处理(真正的翻译)例:变量的存储分配例:表达式的求值例:语句的翻译(中间代码的生成)总目标:生成等价的中间代码/目标代码7/17/202135、处理方法1)对应每一个文法规则编制一个语义子程序,当一个规则获得匹配时,调用相应的语义子程序实现语义检查与翻译。2)在文法规则的右部适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作。注意:语义——可以看成是相应文法符号的属性。7/17/202146、语法制导翻译的具体实现途径使用LR分析器实现:通过对符号栈加上语义,扩充LR分析器的分析能力,使它在
3、用某个文法规则进行归约的同时,调用相应的语义子程序或产生某种中间代码形式。7/17/202158.2属性文法1、现代编译系统多采用语法制导翻译方法,该方法使用属性文法为工具来说明程序设计语言的语义。2、属性文法是Knuth在1968年提出的。3、属性文法的特点1)是一种接近形式化的语义描述方法;2)每个语法符号有相应的属性符号;3)每个文法规则都有相应的计算属性的规则:属性变量=属性表达式7/17/20216一、属性文法举例规则属性(计算)规则/语义规则E→E1+E2E.val:=E1.val+E2.valE→E1*E2E.val:=E1.val*E
4、2.valE→(E1)E.val:=E1.valE→idE.val:=id.val7/17/20217二、属性文法的定义1、定义为三元组A=(G,V,F)。其中:G是上下文无关文法;V是属性的有穷集;F是关于属性的谓词/断言,充当计算规则。说明:任何布尔表达式都是谓词。2、属性(语义信息)与终结符或非终结符相联;谓词与文法规则相联。3、静态语义审查即验证关于所编译源程序的谓词是否全为真。可用带语义信息结点的语法树来表示与输入串对应语法树的静态语义审查。7/17/20218三、用法1、根据文法符号的语义,为文法符号设置属性。2、为每个文法规则设置语义规
5、则(用于描述各属性的关系——计算规则)3、两种使用形式:用于语法制导定义:语义的抽象说明。用于翻译模式的定义:规定实现方法(计算次序)。7/17/20219例1:计算器的设计对下列文法:L→EE→E1+T
6、TT→T1*F
7、FF→(E)
8、digit用属性文法描述语法制导的翻译过程如下:7/17/202110L→Eprint(E.val)(虚属性)E→E1+TE.val:=E1.val+T.valE→TE.val:=T.valT→T1*FT.val:=T1.val*F.valT→FT.val:=F.valF→(E)F.val:=E.valF→digitF
9、.val:=digit.lexval其中:lexval是单词digit的属性7/17/202111例2:说明语句的设计说明语句的文法D→TLT→intT→realL→L1,idL→id1、要解决的问题:1)记录标识符的类型;2)类型信息的传递。7/17/2021122、说明语句类型信息传递的实现1)方法编写说明语句的文法,将类型信息作为类型描述T的属性type和变量表L的属性in。2)目的分析说明语句D,为变量指定类型。7/17/2021133、属性文法的实现D→TLL.in:=T.typeT→intT.type:=‘integer’T→realT.
10、type:=‘real’L→L1,idL1.in:=L.inaddtype(id.entry,L.in)L→idaddtype(id.entry,L.in)其中:entry为单词id的属性;addtype表示在符号表中为变量填加类型信息;7/17/202114四、属性分类1、综合属性设A→X1X2…Xn为一个文法规则,则A.s=f(c1,c2,…,ck)中,c1,c2,…,ck表示X1,X2,…,Xn的属性。而A.s是从其右部符号的属性值计算出来的,如:例中的E.val、T.type。即左部非终结符的属性值的计算来自其规则右部非终结符。这种属性叫做综
11、合属性。适应范围:归约分析。7/17/2021152、继承属性设A→X1X2…Xn为一个文法规则,则B.in
此文档下载收益归作者所有