编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)_第1页
编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)_第2页
编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)_第3页
编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)_第4页
编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.1语义分析概述词法分析、语法分析——程序在书写上是正确的、在语法上是正确的,不能保证含义(语义)上的正确性11/29/202215.1语义分析概述词法分析、语法分析——程序在书写上5.1语义分析概述语义分析阶段分析源程序的含义,并作相应的处理,语义分析的基本功能:确定类型:确定标识符所关联数据对象的类型,即处理源程序的说明部分类型检查:对运算及进行运算的运算分量进行类型检查,检查运算的合法性与运算分量类型的一致性(相容性),必要时作相应的类型转换11/29/202225.1语义分析概述语义分析阶段分析源程序的含义,并作相应5.1语义分析概述识别含义:确定程序中各构成成分组合到一起的含义,对可执行语句生成中间代码或目标代码*语义分析往往是和中间代码生成紧密联系的其他一些静态语义检查:控制流检查:如对于PASCAL语言,不允许从循环外跳转到循环内,C语言的Break引起控制离开最小包围的while、for等语句,检查是否这样的语句存在唯一性检查:如标识符只能定义一次,枚举类型的元素不能重复等11/29/202235.1语义分析概述识别含义:确定程序中各构成成分组合到一5.1语义分析概述语义分析的输入是语法分析的输出(分析树),输出是中间代码,但同时它还完成了很多语义处理工作(见上)语义分析的主流技术——语法制导翻译技术11/29/202245.1语义分析概述语义分析的输入是语法分析的输出(分析树5.2语法制导翻译文法符号的属性:文法符号(GrammarSymbols)代表语言结构(LanguageConstruct),如标识符、表达式、语句、程序为每个文法符号引入一个属性(attribute)集合,反映相应语言结构的语义信息,如标识符的类型、常量的值、变量的存储地址等11/29/202255.2语法制导翻译文法符号的属性:文法符号(Gramma属性的类型(从分析过程中属性值的计算方法来分类):5.2语法制导翻译 1、综合属性(SynthesizedAttributes):属性值是分析树中该结点的子结点的属性值的函数 2、继承属性(InheritedAttributes):属性值是分析树中该结点的父结点和/或兄弟结点的属性值的函数11/29/20226属性的类型(从分析过程中属性值的计算方法来分类):5.25.2语法制导翻译对于产生式AX1X2…XnAX1X2Xn…计算A的综合属性,S(A):=f(I(X1),…,I(Xn))计算Xj的继承属性,T(Xj):=f(I(A),...,I(Xn))综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息11/29/202275.2语法制导翻译对于产生式AX1X2…XnAX5.2语法制导翻译非终结符(开始符号除外)既可有综合属性也可有继承属性文法开始符号没有继承属性终结符号只有综合属性,一般由词法分析器提供11/29/202285.2语法制导翻译非终结符(开始符号除外)既可有综合属性5.2语法制导翻译语法制导定义:为每一条产生式(Aα)引入一套语义规则规则形式:b:=f(c1,c2,…,ck)b是A的综合属性,则c1,c2,…,ck是产生式文法符号的属性b是产生式右部某文法符号的继承属性,则c1,c2,…,ck是产生式文法符号的属性11/29/202295.2语法制导翻译语法制导定义:规则形式:b:=f5.2语法制导翻译虚(综合)属性(Dummysynthesizedattribute):针对语义动作(过程或语义子程序)只是为了形式上的统一语义规则可以计算属性值,也可以(语义动作)在符号表中登录信息、输出错误信息、进行类型检查、产生中间代码等11/29/2022105.2语法制导翻译虚(综合)属性语义规则可以计算属性值,5.2语法制导翻译例1P281Fig.5.2(只有综合属性)虚属性终结符号的属性某些非终结符加下标是为了区分一个产生式中同一非终结符的多次出现例2P283Fig.5.4(带有继承属性)11/29/2022115.2语法制导翻译例1P281Fig.5.25.2语法制导翻译属性文法:语法制导定义对上下文无关文法进行了扩充,扩充后的文法称为属性文法(attributegrammar)。11/29/2022125.2语法制导翻译属性文法:语法制导定义对上下文无关文法5.2语法制导翻译语法制导翻译(Syntax-DirectedTranslation):根据语法分析中产生式对应的语义规则进行翻译的方法称为语法制导翻译。语法制导:基于语法分析中用到的文法产生式翻译:完成语义分析的各项功能,不仅指生成中间代码11/29/2022135.2语法制导翻译语法制导翻译语法制导:基于语法分析中用5.2语法制导翻译属性之间的依赖关系语义规则b:=f(c1,c2,…,ck)只有在已知c1,…,ck值的基础上,才能计算属性值b称属性b依赖于属性c1,…,ck11/29/2022145.2语法制导翻译属性之间的依赖关系只有在已知c1,…5.2语法制导翻译依赖图(DependencyGraphs):有向边,a→b,表示属性b依赖于属性a用来表示属性之间依赖关系的有向图(DirectedGraph)称为依赖图11/29/2022155.2语法制导翻译依赖图(DependencyGrap5.2语法制导翻译依赖图的构造算法:P284考虑的是分析树中的结点一个属性建立一个结点为每个语义动作引入一个虚属性例Fig.5.611/29/2022165.2语法制导翻译依赖图的构造算法:P284例Fig.5.2语法制导翻译依赖图的例子:LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*Fig.5.3的依赖图n11/29/2022175.2语法制导翻译依赖图的例子:LE.val=19E.v5.2语法制导翻译依赖图的例子:Fig.5.7(Fig.5.5的依赖图)11/29/2022185.2语法制导翻译依赖图的例子:11/27/2022185.2语法制导翻译属性计算顺序有向非循环图(directedacyclicgraph)的拓扑排序(topologicalsort):图中所有结点的一个排列若mi→mj是一有向边,则在结点序列中mi在mj的前面11/29/2022195.2语法制导翻译属性计算顺序有向非循环图(direct5.2语法制导翻译例子:1234765拓扑排序:765432175643214763521*依赖图的任一拓扑排序是一个合理的属性计算顺序

11/29/2022205.2语法制导翻译例子:1234765拓扑排序:765.2语法制导翻译属性计算实例:P286Example5.611/29/2022215.2语法制导翻译属性计算实例:11/27/2022215.2语法制导翻译属性计算的三种方法:1、分析树法:(1)按基础文法构造句子(程序)的分析树(语法分析)(2)按分析树构造依赖图(3)对依赖图进行拓扑排序,得到语义规则的执行顺序(4)按上述顺序执行语义规则,计算属性值,得到句子的翻译结果*如果依赖图存在回路,这种方法会失败11/29/2022225.2语法制导翻译属性计算的三种方法:*如果依赖图存在5.2语法制导翻译2、基于语义规则的方法(Rule-basedmethods):语法分析和属性计算分开,先构造分析树,然后按预先定义的策略遍历分析树来计算属性语义规则的定义和计算顺序(翻译模式)在编译器构造之前确定11/29/2022235.2语法制导翻译2、基于语义规则的方法(Rule-ba5.2语法制导翻译分析树遍历策略的确定(构造编译器时)要考虑语义规则的定义及计算顺序,因此是基于规则的方法优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率11/29/2022245.2语法制导翻译分析树遍历策略的确定(构造编译器时)要5.2语法制导翻译3、忽略语义规则的方法(Obliviousmethods):在进行语法分析的同时进行翻译,即边分析边计算属性,计算次序由分析方法确定而与语义规则无关缺点:这样确定计算次序将限制能实现的语法制导定义的种类优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率11/29/2022255.2语法制导翻译3、忽略语义规则的方法(Oblivio5.2语法制导翻译S-属性定义(S-attributeddefinitions):只含有综合属性的语法制导定义例:P281Fig.5.211/29/2022265.2语法制导翻译S-属性定义(S-attribute5.2语法制导翻译只有综合属性时(以P282Fig.5.3的依赖图为例)依赖图中有向边的走向和自底向上分析时建立分析树的顺序是一致的因此,可以考虑在进行语法分析(自底向上)的同时进行翻译(执行语义规则)11/29/2022275.2语法制导翻译只有综合属性时(以P282Fig.5.2语法制导翻译具体实现:扩充LR分析器,为栈中的每一个文法符号增加一个属性域,存放分析过程中该文法符号的综合属性值,当用产生式进行归约时,产生式左边文法符号入栈,其属性值由栈中正在归约的产生式右边符号的属性值计算11/29/2022285.2语法制导翻译具体实现:扩充LR分析器,为栈中的每5.2语法制导翻译例子1:P294……XX.xYY.yZZ.z…………AA.a………………toptop11/29/2022295.2语法制导翻译例子1:……XX.xYY.y5.2语法制导翻译例子2:P295-296Fig.5.16Fig.5.17ntop=top–r+1r是产生式右部符号个数PRODUCTION SEMANTICRULELEn print(val[top])EE1+T val[ntop]=val[top-2]+val[top]

ET TT1*F val[ntop]=val[top-2]*val[top]

TF F(E) val[ntop]=val[top-1] Fdigit 11/29/2022305.2语法制导翻译例子2:P295-296Fig.55.2语法制导翻译**Fig.5.16是Fig.5.2的一种具体实现方法11/29/2022315.2语法制导翻译**Fig.5.16是Fig.55.2语法制导翻译L-属性定义(L-attributeddefinitions):是一种语法制导定义对于产生式A→X1X2…Xn右部Xj的继承属性,它依赖于: 1、X1,X2,…,Xj-1(Xj左边的文法符号)的属性 2、A的继承属性**L-属性定义包含S-属性定义11/29/2022325.2语法制导翻译L-属性定义(L-attribute5.2语法制导翻译例子:P298Fig.5.19(非L-属性定义)11/29/2022335.2语法制导翻译例子:(非L-属性定义)11/27/25.2语法制导翻译翻译模式(translationscheme):将语义规则放到{}中,并插入到产生式右部的适当位置,以反映语义规则的计算顺序,这种书写形式称之为翻译模式翻译模式与语法制导定义的区别:翻译模式中指明了语义规则的执行顺序11/29/2022345.2语法制导翻译翻译模式(translationsc5.2语法制导翻译例子:P298例5.12(5.1)是一个翻译模式用此翻译模式去分析一个句子(9-5+2)把语义动作作为终结符号11/29/2022355.2语法制导翻译例子:P298例5.12用此翻译模ETR9{print(“9”)}-T{print(“-”)}{print(“5”)}{print(“+”)}{print(“2”)}52RT12345对分析树(Fig.5.20)进行深度优先遍历,执行语义动作,完成翻译工作(95-2+)(5.1)是一个适合以深度优先顺序计算属性的翻译模式R+11/29/202236ETR9{print(“9”)}-T{print(“-”)}5.2语法制导翻译为L-属性定义构造翻译模式:适合以深度优先顺序计算属性的翻译模式需满足的条件:1、产生式右部文法符号的继承属性必须在这个符号以前的动作中计算出来;2、一个动作不能引用该动作右边符号的综合属性;3、产生式左部非终结符号的综合属性只有在其引用的所有属性都计算出来以后才能计算。计算该属性的动作通常放在产生式右部的末尾11/29/2022375.2语法制导翻译为L-属性定义构造翻译模式:适合以深5.2语法制导翻译从L-属性定义出发,构造一个满足要求的翻译模式**L-属性定义本身考虑到了满足这些条件(第一条件)将计算产生式右边某文法符号的继承属性的语义规则插入到此符号之前(第二条件)L-属性定义本身满足(第三条件)将计算产生式左边非终结符号综合属性的语义规则放在产生式右端的末尾11/29/2022385.2语法制导翻译从L-属性定义出发,构造一个满足要求5.2语法制导翻译例子:P300-301例5.13Fig.5.22----语法制导定义(L-属性定义)Fig.5.23----翻译模式11/29/2022395.2语法制导翻译例子:P300-301例5.13FPRODUCTION SEMANTICRULESB B.ps=10;S.ht=B.htBB1B2 B1.ps=B.ps;B2.ps=B.ps;

B.ht=max(B1.ht,B2.ht)BB1subB2 B1.ps=B.ps;B2.ps=shrink(B.ps);

B.ht=disp(B1.ht,B2.ht)Btext B.ht=text.h*B.psTRANSLATIONSCHEMES{B.ps=10}B{S.ht=B.ht}B{B1.ps=B.ps}B1{B2.ps=B.ps}B2{B.ht=max(B1.ht,B2.ht)}B{B1.ps=B.ps}B1sub{B2.ps=shrink(B.ps)}B2{B.ht=disp(B1.ht,B2.ht)}Btext{B.ht=text.h*B.ps}11/29/202240PRODUCTION SEMANTICRULETRANSL5.2语法制导翻译分析一个句子:textsubtexttextSBB2B1textB3subB4texttext分析树11/29/2022415.2语法制导翻译分析一个句子:textsubtex带语义动作的分析树SB{B.ps:=10}{S.ht:=B.ht}{B1.ps:=B.ps}{B.ht:=max(B1.ht,B2.ht}{B2.ps:=B.ps}B1B2{B3.ps:=B1.ps}{B4.ps:=shrink(B1.ps)}{B1.ht:=disp(B3.ht,B4.ht}B4subB3text{B2.ht:=text.h*B2.ps}text{B3.ht:=text.h*B3.ps}text{B4.ht:=text.h*B4.ps}1234567891011*深度优先计算属性11/29/202242带语义动作的分析树SB{B.ps:=10}{S.ht:=B.TheEnd!11/29/202243TheEnd!11/27/202243编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)编译原理课件CHAPTER5(SemanticAnalysisandIntermediateCodeGeneration-1)5.1语义分析概述词法分析、语法分析——程序在书写上是正确的、在语法上是正确的,不能保证含义(语义)上的正确性11/29/2022465.1语义分析概述词法分析、语法分析——程序在书写上5.1语义分析概述语义分析阶段分析源程序的含义,并作相应的处理,语义分析的基本功能:确定类型:确定标识符所关联数据对象的类型,即处理源程序的说明部分类型检查:对运算及进行运算的运算分量进行类型检查,检查运算的合法性与运算分量类型的一致性(相容性),必要时作相应的类型转换11/29/2022475.1语义分析概述语义分析阶段分析源程序的含义,并作相应5.1语义分析概述识别含义:确定程序中各构成成分组合到一起的含义,对可执行语句生成中间代码或目标代码*语义分析往往是和中间代码生成紧密联系的其他一些静态语义检查:控制流检查:如对于PASCAL语言,不允许从循环外跳转到循环内,C语言的Break引起控制离开最小包围的while、for等语句,检查是否这样的语句存在唯一性检查:如标识符只能定义一次,枚举类型的元素不能重复等11/29/2022485.1语义分析概述识别含义:确定程序中各构成成分组合到一5.1语义分析概述语义分析的输入是语法分析的输出(分析树),输出是中间代码,但同时它还完成了很多语义处理工作(见上)语义分析的主流技术——语法制导翻译技术11/29/2022495.1语义分析概述语义分析的输入是语法分析的输出(分析树5.2语法制导翻译文法符号的属性:文法符号(GrammarSymbols)代表语言结构(LanguageConstruct),如标识符、表达式、语句、程序为每个文法符号引入一个属性(attribute)集合,反映相应语言结构的语义信息,如标识符的类型、常量的值、变量的存储地址等11/29/2022505.2语法制导翻译文法符号的属性:文法符号(Gramma属性的类型(从分析过程中属性值的计算方法来分类):5.2语法制导翻译 1、综合属性(SynthesizedAttributes):属性值是分析树中该结点的子结点的属性值的函数 2、继承属性(InheritedAttributes):属性值是分析树中该结点的父结点和/或兄弟结点的属性值的函数11/29/202251属性的类型(从分析过程中属性值的计算方法来分类):5.25.2语法制导翻译对于产生式AX1X2…XnAX1X2Xn…计算A的综合属性,S(A):=f(I(X1),…,I(Xn))计算Xj的继承属性,T(Xj):=f(I(A),...,I(Xn))综合属性用于“自下而上”传递信息,继承属性用于“自上而下”传递信息11/29/2022525.2语法制导翻译对于产生式AX1X2…XnAX5.2语法制导翻译非终结符(开始符号除外)既可有综合属性也可有继承属性文法开始符号没有继承属性终结符号只有综合属性,一般由词法分析器提供11/29/2022535.2语法制导翻译非终结符(开始符号除外)既可有综合属性5.2语法制导翻译语法制导定义:为每一条产生式(Aα)引入一套语义规则规则形式:b:=f(c1,c2,…,ck)b是A的综合属性,则c1,c2,…,ck是产生式文法符号的属性b是产生式右部某文法符号的继承属性,则c1,c2,…,ck是产生式文法符号的属性11/29/2022545.2语法制导翻译语法制导定义:规则形式:b:=f5.2语法制导翻译虚(综合)属性(Dummysynthesizedattribute):针对语义动作(过程或语义子程序)只是为了形式上的统一语义规则可以计算属性值,也可以(语义动作)在符号表中登录信息、输出错误信息、进行类型检查、产生中间代码等11/29/2022555.2语法制导翻译虚(综合)属性语义规则可以计算属性值,5.2语法制导翻译例1P281Fig.5.2(只有综合属性)虚属性终结符号的属性某些非终结符加下标是为了区分一个产生式中同一非终结符的多次出现例2P283Fig.5.4(带有继承属性)11/29/2022565.2语法制导翻译例1P281Fig.5.25.2语法制导翻译属性文法:语法制导定义对上下文无关文法进行了扩充,扩充后的文法称为属性文法(attributegrammar)。11/29/2022575.2语法制导翻译属性文法:语法制导定义对上下文无关文法5.2语法制导翻译语法制导翻译(Syntax-DirectedTranslation):根据语法分析中产生式对应的语义规则进行翻译的方法称为语法制导翻译。语法制导:基于语法分析中用到的文法产生式翻译:完成语义分析的各项功能,不仅指生成中间代码11/29/2022585.2语法制导翻译语法制导翻译语法制导:基于语法分析中用5.2语法制导翻译属性之间的依赖关系语义规则b:=f(c1,c2,…,ck)只有在已知c1,…,ck值的基础上,才能计算属性值b称属性b依赖于属性c1,…,ck11/29/2022595.2语法制导翻译属性之间的依赖关系只有在已知c1,…5.2语法制导翻译依赖图(DependencyGraphs):有向边,a→b,表示属性b依赖于属性a用来表示属性之间依赖关系的有向图(DirectedGraph)称为依赖图11/29/2022605.2语法制导翻译依赖图(DependencyGrap5.2语法制导翻译依赖图的构造算法:P284考虑的是分析树中的结点一个属性建立一个结点为每个语义动作引入一个虚属性例Fig.5.611/29/2022615.2语法制导翻译依赖图的构造算法:P284例Fig.5.2语法制导翻译依赖图的例子:LE.val=19E.val=15T.val=4T.val=15F.val=4T.val=3F.val=3F.val=5digit.lexval=4digit.lexval=5digit.lexval=3+*Fig.5.3的依赖图n11/29/2022625.2语法制导翻译依赖图的例子:LE.val=19E.v5.2语法制导翻译依赖图的例子:Fig.5.7(Fig.5.5的依赖图)11/29/2022635.2语法制导翻译依赖图的例子:11/27/2022185.2语法制导翻译属性计算顺序有向非循环图(directedacyclicgraph)的拓扑排序(topologicalsort):图中所有结点的一个排列若mi→mj是一有向边,则在结点序列中mi在mj的前面11/29/2022645.2语法制导翻译属性计算顺序有向非循环图(direct5.2语法制导翻译例子:1234765拓扑排序:765432175643214763521*依赖图的任一拓扑排序是一个合理的属性计算顺序

11/29/2022655.2语法制导翻译例子:1234765拓扑排序:765.2语法制导翻译属性计算实例:P286Example5.611/29/2022665.2语法制导翻译属性计算实例:11/27/2022215.2语法制导翻译属性计算的三种方法:1、分析树法:(1)按基础文法构造句子(程序)的分析树(语法分析)(2)按分析树构造依赖图(3)对依赖图进行拓扑排序,得到语义规则的执行顺序(4)按上述顺序执行语义规则,计算属性值,得到句子的翻译结果*如果依赖图存在回路,这种方法会失败11/29/2022675.2语法制导翻译属性计算的三种方法:*如果依赖图存在5.2语法制导翻译2、基于语义规则的方法(Rule-basedmethods):语法分析和属性计算分开,先构造分析树,然后按预先定义的策略遍历分析树来计算属性语义规则的定义和计算顺序(翻译模式)在编译器构造之前确定11/29/2022685.2语法制导翻译2、基于语义规则的方法(Rule-ba5.2语法制导翻译分析树遍历策略的确定(构造编译器时)要考虑语义规则的定义及计算顺序,因此是基于规则的方法优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率11/29/2022695.2语法制导翻译分析树遍历策略的确定(构造编译器时)要5.2语法制导翻译3、忽略语义规则的方法(Obliviousmethods):在进行语法分析的同时进行翻译,即边分析边计算属性,计算次序由分析方法确定而与语义规则无关缺点:这样确定计算次序将限制能实现的语法制导定义的种类优点:不构造依赖图,不对依赖图进行拓扑排序,提高了时空效率11/29/2022705.2语法制导翻译3、忽略语义规则的方法(Oblivio5.2语法制导翻译S-属性定义(S-attributeddefinitions):只含有综合属性的语法制导定义例:P281Fig.5.211/29/2022715.2语法制导翻译S-属性定义(S-attribute5.2语法制导翻译只有综合属性时(以P282Fig.5.3的依赖图为例)依赖图中有向边的走向和自底向上分析时建立分析树的顺序是一致的因此,可以考虑在进行语法分析(自底向上)的同时进行翻译(执行语义规则)11/29/2022725.2语法制导翻译只有综合属性时(以P282Fig.5.2语法制导翻译具体实现:扩充LR分析器,为栈中的每一个文法符号增加一个属性域,存放分析过程中该文法符号的综合属性值,当用产生式进行归约时,产生式左边文法符号入栈,其属性值由栈中正在归约的产生式右边符号的属性值计算11/29/2022735.2语法制导翻译具体实现:扩充LR分析器,为栈中的每5.2语法制导翻译例子1:P294……XX.xYY.yZZ.z…………AA.a………………toptop11/29/2022745.2语法制导翻译例子1:……XX.xYY.y5.2语法制导翻译例子2:P295-296Fig.5.16Fig.5.17ntop=top–r+1r是产生式右部符号个数PRODUCTION SEMANTICRULELEn print(val[top])EE1+T val[ntop]=val[top-2]+val[top]

ET TT1*F val[ntop]=val[top-2]*val[top]

TF F(E) val[ntop]=val[top-1] Fdigit 11/29/2022755.2语法制导翻译例子2:P295-296Fig.55.2语法制导翻译**Fig.5.16是Fig.5.2的一种具体实现方法11/29/2022765.2语法制导翻译**Fig.5.16是Fig.55.2语法制导翻译L-属性定义(L-attributeddefinitions):是一种语法制导定义对于产生式A→X1X2…Xn右部Xj的继承属性,它依赖于: 1、X1,X2,…,Xj-1(Xj左边的文法符号)的属性 2、A的继承属性**L-属性定义包含S-属性定义11/29/2022775.2语法制导翻译L-属性定义(L-attribute5.2语法制导翻译例子:P298Fig.5.19(非L-属性定义)11/29/2022785.2语法制导翻译例子:(非L-属性定义)11/27/25.2语法制导翻译翻译模式(translationscheme):将语义规则放到{}中,并插入到产生式右部的适当位置,以反映语义规则的计算顺序,这种书写形式称之为翻译模式翻译模式与语法制导定义的区别:翻译模式中指明了语义规则的执行顺序11/29/2022795.2语法制导翻译翻译模式(translationsc5.2语法制导翻译例子:P298例5.12(5.1)是一个翻译模式用此翻译模式去分析一个句子(9-5+2)把语义动作作为终结符号11/29/2022805.2语法制导翻译例子:P298例5.12用此翻译模ETR9{print(“9”)}-T{print(“-”)}{print(“5”)}{print(“+”)}{print(“2”)}52RT12345对分析树(Fig.5.20)进行深度优先遍历,执行语义动作,完成翻译工作(95-2+)(5.1)是一个适合以深度优先顺序计算属性的翻译模式R+11/29/202281ETR9{print(“9”)}-T{print(“-”)}5.2语法制导翻译为L-属性定义构造翻译模式:适合以深度优先顺序计算属性的翻译模式需满足的条件:1、产生式右部文法符号的继承属性必须在这个符号以前的动作中计算出来;2、一个动作不能引用该动作右边符号的综合属性;3、产生式左部非终结符号的综合属性只有在其引用的所有属性都计算出来以后才能计算。计算该属性的动作通常放在产生式右部的末尾11/29/2022825.2语法制导翻译为L-属性定义构造翻译模式:适合以深5.2语法制导翻译从L-属性定义出发,构造一个满足要求的翻译模式**L-属性定义本身考虑到了满足这些条件(第一条件)将计算产生式右边某文法符号的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论