编译原理语义分析与中间代码生成.ppt
《编译原理语义分析与中间代码生成.ppt》由会员分享,可在线阅读,更多相关《编译原理语义分析与中间代码生成.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院语义分析与中间代码生成vv复习:编译程序的逻辑过程复习:编译程序的逻辑过程复习:编译程序的逻辑过程复习:编译程序的逻辑过程vv按照编译程序的逻辑工作过程,语法分析后,接下来就要进按照编译程序的逻辑工作过程,语法分析后,接下来就要进按照编译程序的逻辑工作过程,语法分析后,接下来就要进按照编译程序的逻辑工作过程,语法分析后,接下来就要进行语义分析了,语义分析后,再生成中间代码。实际应用中,行语义分析了,语义分析后,再生成中间代码。实际应
2、用中,行语义分析了,语义分析后,再生成中间代码。实际应用中,行语义分析了,语义分析后,再生成中间代码。实际应用中,往往在语法分析的同时,进行语义分析并生成中间代码,这往往在语法分析的同时,进行语义分析并生成中间代码,这往往在语法分析的同时,进行语义分析并生成中间代码,这往往在语法分析的同时,进行语义分析并生成中间代码,这就是语法制导翻译法。就是语法制导翻译法。就是语法制导翻译法。就是语法制导翻译法。vv语法制导翻译过程中,需要借助于属性文法进行语义描述和语法制导翻译过程中,需要借助于属性文法进行语义描述和语法制导翻译过程中,需要借助于属性文法进行语义描述和语法制导翻译过程中,需要借助于属性文法
3、进行语义描述和语义处理。语义处理。语义处理。语义处理。vv本章内容:本章内容:本章内容:本章内容:属性文法有关概念;属性文法有关概念;属性文法有关概念;属性文法有关概念;语法制导翻译基本思想;语法制导翻译基本思想;语法制导翻译基本思想;语法制导翻译基本思想;中间代码形式;中间代码形式;中间代码形式;中间代码形式;简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻简单算术表达式、布尔表达式、赋值语句、条件语句、循环语句的翻译。译。译。译。编译原理编译原理编译原理编译原
4、理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院属性文法属性文法表达式文法表达式文法表达式文法表达式文法 ET+T|T or T ET+T|T or T Tn|b Tn|b E E E ET T T T1 1 1 1+T+T+T+T2 2 2 2 T T T T1 1 1 1.type=int .type=int .type=int .type=int T T T T2 2 2 2.type=T.type=T.type=T.type=T1 1 1 1.type .type .type .type E.type=
5、int E.type=int E.type=int E.type=int E E E E T T T T1 1 1 1 or Tor Tor Tor T2 2 2 2 T T T T1 1 1 1.type=bool.type=bool.type=bool.type=bool T T T T2 2 2 2.type=T.type=T.type=T.type=T1 1 1 1.type.type.type.type E.type=bool E.type=bool E.type=bool E.type=bool T T T T n T.type=int n T.type=int n T.type=
6、int n T.type=int T T T T b T.type=bool b T.type=bool b T.type=bool b T.type=bool 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院属性文法属性文法vv对于某个压缩了的文法,当把每个文法符对于某个压缩了的文法,当把每个文法符号和一组属性相关联,并把产生式附加以号和一组属性相关联,并把产生式附加以语义规则的时候,就得到属性文法。语义规则的时候,就得到属性文法。vv语法制导的翻译过程:由于属性文法的规语法制导
7、的翻译过程:由于属性文法的规则和产生式是一一对应的关系,所以,由则和产生式是一一对应的关系,所以,由属性文法确定的语义分析可以在语法分析属性文法确定的语义分析可以在语法分析的过程中进行。这个过程称为语法制导的的过程中进行。这个过程称为语法制导的翻译。翻译。编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院属性文法属性文法(attribute grammar)A=(G,V,F),A=(G,V,F),其中其中其中其中 G:G:一个一个一个一个CFG,CFG,属性文法的基础。属性文法的基础
8、。属性文法的基础。属性文法的基础。V:V:有穷的属性集有穷的属性集有穷的属性集有穷的属性集vv每个属性与一个文法符号相关联每个属性与一个文法符号相关联每个属性与一个文法符号相关联每个属性与一个文法符号相关联vv这些属性代表与文法符号相关的语义信息这些属性代表与文法符号相关的语义信息这些属性代表与文法符号相关的语义信息这些属性代表与文法符号相关的语义信息如类型、地址、值、代码、符号表内容等等如类型、地址、值、代码、符号表内容等等如类型、地址、值、代码、符号表内容等等如类型、地址、值、代码、符号表内容等等vv属性与变量一样,可以进行计算和传递属性与变量一样,可以进行计算和传递属性与变量一样,可以进
9、行计算和传递属性与变量一样,可以进行计算和传递vv属性加工的过程即是语义处理的过程属性加工的过程即是语义处理的过程属性加工的过程即是语义处理的过程属性加工的过程即是语义处理的过程vv属性加工与语法分析同时进行属性加工与语法分析同时进行属性加工与语法分析同时进行属性加工与语法分析同时进行vv属性的表示:属性的表示:属性的表示:属性的表示:标识符(或数),写在相应文法的下边标识符(或数),写在相应文法的下边标识符(或数),写在相应文法的下边标识符(或数),写在相应文法的下边点记法:点记法:点记法:点记法:E.Val,E.Place,E.TypeE.Val,E.Place,E.TypeF:F:关于属
10、性的属性断言或一组属性的计算规则关于属性的属性断言或一组属性的计算规则关于属性的属性断言或一组属性的计算规则关于属性的属性断言或一组属性的计算规则(称为语义规称为语义规称为语义规称为语义规则则则则).).vv断言或语义规则与一个产生式相联断言或语义规则与一个产生式相联断言或语义规则与一个产生式相联断言或语义规则与一个产生式相联,只引用该产生式左只引用该产生式左只引用该产生式左只引用该产生式左端或右端的终结符或非终结符相关的属性端或右端的终结符或非终结符相关的属性端或右端的终结符或非终结符相关的属性端或右端的终结符或非终结符相关的属性.编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工
11、程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院语义规则描述的工作语义规则描述的工作vv属性计算属性计算vv静态语义检查静态语义检查vv符号表操作符号表操作vv代码生成代码生成 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院继承属性和综合属性继承属性和综合属性vv两类属性:两类属性:两类属性:两类属性:综合属性综合属性综合属性综合属性(Synthesized Attribute)(Synthesized Attribute):
12、归约型属性:归约型属性:归约型属性:归约型属性vv用于用于用于用于“自下而上自下而上自下而上自下而上”传递信息传递信息传递信息传递信息继承属性继承属性继承属性继承属性(Inherited Attribute)(Inherited Attribute):推导型属性:推导型属性:推导型属性:推导型属性vv用于用于用于用于“自上而下自上而下自上而下自上而下”传递信息。传递信息。传递信息。传递信息。vv属性的计算:属性的计算:属性的计算:属性的计算:A AX1 X2 XnX1 X2 XnA A的综合属性的综合属性的综合属性的综合属性,计算计算计算计算 S(A)=f(A(X1),A(Xn)S(A)=f(
13、A(X1),A(Xn)XjXj的继承属性的继承属性的继承属性的继承属性,计算计算计算计算 I(Xj)=f(A(A),.A(Xn)I(Xj)=f(A(A),.A(Xn)vv文法符号属性的说明:文法符号属性的说明:文法符号属性的说明:文法符号属性的说明:非终结符既可有综合属性也可有继承属性,但文法开始符号没有继非终结符既可有综合属性也可有继承属性,但文法开始符号没有继非终结符既可有综合属性也可有继承属性,但文法开始符号没有继非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性承属性承属性承属性.终结符只有综合属性终结符只有综合属性终结符只有综合属性终结符只有综合属性.通常规定:通常规定
14、:通常规定:通常规定:文法符号的综合属性与继承属性无交。文法符号的综合属性与继承属性无交。文法符号的综合属性与继承属性无交。文法符号的综合属性与继承属性无交。编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院综合属性的例子综合属性的例子vv非终结符非终结符非终结符非终结符E E、T T及及及及F F都有一都有一都有一都有一个综合属性个综合属性个综合属性个综合属性val,val,符号符号符号符号digitdigit有有有有一个综合属性,它的值由词一个综合属性,它的值由词一个综合属性,它
15、的值由词一个综合属性,它的值由词法分析器提供。法分析器提供。法分析器提供。法分析器提供。vv与产生式与产生式与产生式与产生式LELE对应的语义对应的语义对应的语义对应的语义规则仅仅是打印由规则仅仅是打印由规则仅仅是打印由规则仅仅是打印由E E产生的产生的产生的产生的算术表达式的值的一个过程,算术表达式的值的一个过程,算术表达式的值的一个过程,算术表达式的值的一个过程,可认为这条规则定义了可认为这条规则定义了可认为这条规则定义了可认为这条规则定义了L L的的的的一个虚属性。一个虚属性。一个虚属性。一个虚属性。vv某些非终结符加上标是为某些非终结符加上标是为某些非终结符加上标是为某些非终结符加上标
16、是为了区分一个产生式中同一非了区分一个产生式中同一非了区分一个产生式中同一非了区分一个产生式中同一非终结符多次出现终结符多次出现终结符多次出现终结符多次出现语语 义义 规规 则则 L EE E1+TETT T1*FTFF(E)FdigitPrint(E.val)E.val=E1.val+T.val E.val=T.val T.val=T1.val F.val T.val=F.valF.val=E.valF.val=digit.lexval产产 生生 式式 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大
17、学计算机科学与工程学院综合属性的自下而上定值综合属性的自下而上定值L LE.val=19E.val=19E.val=15E.val=15T.val=4T.val=4T.val=15T.val=15F.val=4F.val=4T.val=3T.val=3F.val=3F.val=3F.val=5F.val=5digit.lexval=4digit.lexval=4digit.lexval=5digit.lexval=5digit.lexval=3digit.lexval=3+*3*5+43*5+4的带注释的分析树的带注释的分析树的带注释的分析树的带注释的分析树设表达式为设表达式为设表达式为设表达
18、式为3 35+45+4,则语义动作打印数值,则语义动作打印数值,则语义动作打印数值,则语义动作打印数值1919 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院继承属性的例子继承属性的例子 继承属性继承属性继承属性继承属性L.inL.in产产产产 生生生生 式式式式语语语语 义义义义 规规规规 则则则则D D TLTL T T int int T T realreal L L L L1 1,id,idL L id idL.in=T.typeL.in=T.typeT.type=int
19、egerT.type=integerT.type=realT.type=real L L1 1.in=L.in.in=L.in addtype(id.entry,L.in)addtype(id.entry,L.in)addtype(id.entry,L.inaddtype(id.entry,L.in)编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院继承属性的自上而下定值继承属性的自上而下定值 DL.in=realL.in=realL.in=realT.type=realrealid
20、2id1id3Real id1,id2,id3,编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院语法制导翻译的基本思想语法制导翻译的基本思想vv为每条产生式配上一个翻译子程序(称为语义动作为每条产生式配上一个翻译子程序(称为语义动作为每条产生式配上一个翻译子程序(称为语义动作为每条产生式配上一个翻译子程序(称为语义动作或语义子程序);或语义子程序);或语义子程序);或语义子程序);语义动作的工作语义动作的工作语义动作的工作语义动作的工作vv指明符号串的意义;指明符号串的意义;指明符
21、号串的意义;指明符号串的意义;vv按照这种意义规定了对应的动作:按照这种意义规定了对应的动作:按照这种意义规定了对应的动作:按照这种意义规定了对应的动作:查添各种表格查添各种表格查添各种表格查添各种表格改变变量之值改变变量之值改变变量之值改变变量之值诊察与报告源程序错误诊察与报告源程序错误诊察与报告源程序错误诊察与报告源程序错误产生中间代码产生中间代码产生中间代码产生中间代码vv在语法分析的同时,当一个产生式获得匹配(对于在语法分析的同时,当一个产生式获得匹配(对于在语法分析的同时,当一个产生式获得匹配(对于在语法分析的同时,当一个产生式获得匹配(对于自上而下分析)或用于归约(对于自下而上分析
22、)自上而下分析)或用于归约(对于自下而上分析)自上而下分析)或用于归约(对于自下而上分析)自上而下分析)或用于归约(对于自下而上分析)时,就执行相应产生式的语义子程序。时,就执行相应产生式的语义子程序。时,就执行相应产生式的语义子程序。时,就执行相应产生式的语义子程序。编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院中间代码中间代码vv中间代码(中间代码(Intermediate code):):源程序的一种内部表示,不依赖目标机的结构,源程序的一种内部表示,不依赖目标机的结构,源
23、程序的一种内部表示,不依赖目标机的结构,源程序的一种内部表示,不依赖目标机的结构,易于机械生成目标代码的中间表示。易于机械生成目标代码的中间表示。易于机械生成目标代码的中间表示。易于机械生成目标代码的中间表示。vv几种中间语言几种中间语言后缀式(逆波兰表示法)后缀式(逆波兰表示法)后缀式(逆波兰表示法)后缀式(逆波兰表示法)三地址代码三地址代码三地址代码三地址代码 四元式四元式四元式四元式 三元式三元式三元式三元式 间接三元式间接三元式间接三元式间接三元式树树树树 编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院
24、长春工业大学计算机科学与工程学院后缀式后缀式vv表达式的一种表示形式表达式的一种表示形式运算符直接跟在运算量后面运算符直接跟在运算量后面运算符直接跟在运算量后面运算符直接跟在运算量后面又称为逆波兰表示法又称为逆波兰表示法又称为逆波兰表示法又称为逆波兰表示法vv定义:设定义:设E是表达式,那么是表达式,那么如果如果如果如果E E是变量或者常量,是变量或者常量,是变量或者常量,是变量或者常量,E E的逆波兰表示为的逆波兰表示为的逆波兰表示为的逆波兰表示为E EE1 OP E2=E1 E2 OPE1 OP E2=E1 E2 OP,其中,其中,其中,其中E1,E2 E1,E2 为为为为 E1,E2E1
25、,E2的逆波兰表示。的逆波兰表示。的逆波兰表示。的逆波兰表示。(E)=E,(E)=E,其中其中其中其中EE为为为为E E 的逆波兰表示。的逆波兰表示。的逆波兰表示。的逆波兰表示。编译原理编译原理编译原理编译原理 长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院长春工业大学计算机科学与工程学院vv后缀式的生成后缀式的生成设置一个操作符栈,当扫描到操作数时,输出该操设置一个操作符栈,当扫描到操作数时,输出该操设置一个操作符栈,当扫描到操作数时,输出该操设置一个操作符栈,当扫描到操作数时,输出该操作数。当遇到操作符时,与栈顶操作符比较优先级,作数。当遇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 语义 分析 中间 代码 生成
限制150内