属性文法与语法制导翻译.ppt

属性文法与语法制导翻译.ppt

ID:52121168

大小:313.50 KB

页数:106页

时间:2020-04-01

属性文法与语法制导翻译.ppt_第1页
属性文法与语法制导翻译.ppt_第2页
属性文法与语法制导翻译.ppt_第3页
属性文法与语法制导翻译.ppt_第4页
属性文法与语法制导翻译.ppt_第5页
资源描述:

《属性文法与语法制导翻译.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章的主要内容:属性文法和语法制导的翻译的概念综合属性和继承属性的概念、特点S-属性文法与L-属性文法的概念及分析方法翻译模式递归下降翻译器的设计第六章属性文法和语法制导翻译语法制导翻译语法分析器syntax+translationrules(typicallyhardcodedintheparser)记号流抽象语法树或者汇编代码描述实现词法分析器正规式有限自动机语法分析器上下文无关文法下推自动机语义分析器如何描述?如何实现?Syntaxanalysis–formSemanticanalysis-meaning语法制导翻译:描述把语法分析树翻译成其值或者抽象语法树类型检查语法制导翻译:实现L

2、R语法分析中LL语法分析中语法制导翻译(syntax-directedtranslation):通过给语法上各个符号赋予一定的含义并且将各个符号进行有结构的连接,可以形成语言的具体语句的含义。这给予我们以启示:可以通过扩充文法,在文法符号上附着某些语义信息,并在这些语义信息间建立相互计算关系,从而在语法分析的同时进行语义分析。由于这种分析是在语法分析的控制下进行的,故称为语法制导翻译。6.1属性文法(属性翻译文法)属性文法的概念属性文法的定义:在上下文无关文法的基础上,为每个文法符号(终结符和非终结符)配备若干相关的“值”(也称:“属性”),对于文法的每个产生式都配备了一组属性的计算规则(语

3、义规则),这种文法称为属性文法。1968年,Knuth首先提出。说明:在一般情况下,整个属性文法是非常复杂的。但属性的函数关系却通常非常简单。属性也很少依赖于大量的其它属性,因此可以将相互依赖的属性分割成较小的独立属性集,然后单独对每一属性集写出一个属性文法。(2)属性(Attribute)是编程语言结构的任意特性。属性在其包含的信息和复杂性等方面变化很大。属性的典型例子有:•变量的数据类型。•表达式的值。•存储器中变量的位置。•程序的目标代码。•数的有效位数。(3)属性文法一般表示方法:文法规则语义规则规则1规则2…规则n相关的属性等式/语义规则相关的属性等式/语义规则…相关的属性等式/语

4、义规则一个简单台式计算器的属性文法产生式语义规则L→EnPrint(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.val=digit.lexval无符号整数的属性文法文法规则语义规则Number1→Number2digitNumber→digitdigit→0digit→1digit→2digit→3digit→4digit→5digit→6digit→7digit→8digit→9Number1.val=number2.va

5、l*10+digit.valNumber.val=digit.valDigit.val=0Digit.val=1Digit.val=2Digit.val=3Digit.val=4Digit.val=5Digit.val=6Digit.val=7Digit.val=8Digit.val=9属性的分类综合属性:用于自下而上传递信息;在语法树中,一个结点的综合属性由其子结点的属性值确定,因此,通常使用自底向上的方法在每一个结点处使用语义规则计算综合属性的值。仅仅使用综合属性的属性文法称S-属性文法。继承属性:用于自上而下传递信息;在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属

6、性确定。属性文法为例1中的属性文法,输入:3*5+4ndigitlexval:=3Fval:=3Tval:=3digitlexval:=5Fval:=5Tval:=15*Eval:=15+digitlexval:=4Fval:=4Tval:=4Eval:=19Ln产生式语义规则E→E1+TE.loc=newtemp(),E.code=E1.code

7、

8、T.code

9、

10、addE1.loc,T.loc,E.locE→TE.loc=T.loc,E.code=T.codeT→T1*FT.loc=newtemp(),T.code=T1.code

11、

12、F.code

13、

14、multT1.l

15、oc,F.loc,T.locT→FT.loc=F.loc,T.code=F.codeF→(E)F.loc=E.loc,F.code=E.codeF→idF.loc=id.name,F.code=“”例继承属性的类型说明文法产生式语义规则D→TLL.in=T.typeT→intT.type=integerT→realT.type=realL→L1,idL1.in=L.inAddtype(id.entry,L.i

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

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

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