语义分析与中间代码生成精.ppt





《语义分析与中间代码生成精.ppt》由会员分享,可在线阅读,更多相关《语义分析与中间代码生成精.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、语义分析与中间代码生成第1页,本讲稿共29页第第4 4章语义分析与中间代码生成章语义分析与中间代码生成1.1.要求明确语义分析的要求明确语义分析的任务任务2.2.明确明确属性文法属性文法和和语法制导翻译语法制导翻译的含义的含义3.3.明确明确自底向上和自顶向下自底向上和自顶向下语法制导翻译的区别和语法制导翻译的区别和特点特点4.明确明确生成中间代码的目的,中间代码的几种生成中间代码的目的,中间代码的几种形式形式教学目标教学目标第2页,本讲稿共29页4.1 4.1 语义分析的任务语义分析的任务4.2 4.2 语法制导翻译语法制导翻译4.3 4.3 中间代码中间代码教学内容教学内容第3页,本讲稿共
2、29页词法分析,语法分析词法分析,语法分析:解决单词和语言成分的识别及词法:解决单词和语言成分的识别及词法和语法结构的检查。语法结构可形式化地用一组产生式来和语法结构的检查。语法结构可形式化地用一组产生式来描述。给定一组产生式,我们能够很容易地将其分析器构描述。给定一组产生式,我们能够很容易地将其分析器构造出来。造出来。本章要介绍的是本章要介绍的是语义分析和中间代码生成技术语义分析和中间代码生成技术。程序语言中间代码目标代码程序语言中间代码目标代码翻译翻译翻译翻译第4页,本讲稿共29页根据语义规则对识别出的各种语法成分析其含义,进根据语义规则对识别出的各种语法成分析其含义,进行初步翻译,生成相
3、应的中间代码或直接生成目标代行初步翻译,生成相应的中间代码或直接生成目标代码。码。(1)确定数据类型)确定数据类型(2)语义检查)语义检查动态语义检查:在运行时刻进行动态语义检查:在运行时刻进行 静态语义检查:在编译时完成静态语义检查:在编译时完成(3)识别含义,进行真正的翻译)识别含义,进行真正的翻译4.14.1语义分析的任务语义分析的任务第5页,本讲稿共29页类型检查类型检查。控制流检查控制流检查,确保控制语句有合法的转向点。例如,确保控制语句有合法的转向点。例如,C语语言中的言中的break语句使控制跳离包括该语句的最小的语句使控制跳离包括该语句的最小的switch,while或或for
4、语句。如果不存在包括它的这样的语句,语句。如果不存在包括它的这样的语句,则应报错。则应报错。静态语义检查静态语义检查第6页,本讲稿共29页静态语义检查静态语义检查一致性检查一致性检查。很多情况下要求对象只能被定义一次。例。很多情况下要求对象只能被定义一次。例如,语言中规定一个标识符在同一作用域中只能被说明如,语言中规定一个标识符在同一作用域中只能被说明一次,同一一次,同一case语句的标号不能相同,枚举类型的元素语句的标号不能相同,枚举类型的元素不能重复出现等。不能重复出现等。相关名字检查相关名字检查。有的语言中有时规定,同一名字必。有的语言中有时规定,同一名字必须出现两次或多次。例如,须出现
5、两次或多次。例如,Ada语言中,循环或程序块语言中,循环或程序块可以有一个名字,它出现在这些结构的开头和结尾,如可以有一个名字,它出现在这些结构的开头和结尾,如同语句括号一般,编译程序必须检查它们的配对情况。同语句括号一般,编译程序必须检查它们的配对情况。第7页,本讲稿共29页实际应用中比较流行的语义分析方法:实际应用中比较流行的语义分析方法:基于基于属性文法属性文法的的语法制导翻译方法语法制导翻译方法 4.24.2语法制导翻译语法制导翻译第8页,本讲稿共29页附加了一组附加了一组属性属性和和运算(语义)规则运算(语义)规则的的文法文法 4.2.1 属性文法属性文法文法符号文法符号X的属性的属
6、性t常用常用X.t来表示来表示 语义规则是根据产生式所语义规则是根据产生式所蕴涵的语义蕴涵的语义操作建立起来的,并与操作建立起来的,并与语义分析的目标语义分析的目标有关有关不同的不同的产生式产生式对应不同的语义规则对应不同的语义规则不同的不同的分析目标分析目标也对应不同的语义规则也对应不同的语义规则 1.属性的表示属性的表示2.语义规则语义规则的表示的表示语义信息语义信息语义之间的关系语义之间的关系静态语义检查、符号表操作、代码生成及打印各种错误信息 第9页,本讲稿共29页 非终结符非终结符E E、T T及及F F都有一个综合属性都有一个综合属性val,val,符号符号i i有一有一个综合属性
7、,它的值由词法分析器提供。个综合属性,它的值由词法分析器提供。某些非终结符加下标是为了区分一个产生式中同某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现一非终结符多次出现语语 义义 规规 则则E E1+TE T T T1*FT FF (E)F i E.val=E1.val+T.valE.val=T.val T.val=T1.val F.valT.val=F.valF.val=E.val F.val=i.lexval产生式产生式例例4.14.1第10页,本讲稿共29页4.2.2 语法制导翻译的过程语法制导翻译的过程语法制导翻译:语法制导翻译:将将语义规则语义规则与与语法规则语法规则相
8、结合,在相结合,在语法语法分析分析的过程中通过执行的过程中通过执行语义动作语义动作,计算语义属性值,从,计算语义属性值,从而完成预定的翻译工作。而完成预定的翻译工作。YaccYacc利用的就是语法制导翻译方法,它使用符号利用的就是语法制导翻译方法,它使用符号$表示表示产生式左端的属性,产生式左端的属性,$n$n表示存取产生式右端第表示存取产生式右端第n n个文法符个文法符号相联的属性号相联的属性expr :expr+expr$=$1+$3;第11页,本讲稿共29页自底向上语法自底向上语法制导翻译制导翻译自顶向下语法自顶向下语法制导翻译制导翻译语法制导翻译的实现语法制导翻译的实现第12页,本讲稿
9、共29页语法制导翻译分为两种语法制导翻译分为两种处理方法处理方法:(1)语法制导定义(自底向上):)语法制导定义(自底向上):对每个产生式编制一个语义子程序,在进行语法分析的过程中,对每个产生式编制一个语义子程序,在进行语法分析的过程中,当一个产生式获得匹配时当一个产生式获得匹配时,就调用相应的语义子程序实现语义检,就调用相应的语义子程序实现语义检查与翻译。这种实现方案隐藏了其中语义规则的计算次序等实现细查与翻译。这种实现方案隐藏了其中语义规则的计算次序等实现细节,不必规定翻译顺序。节,不必规定翻译顺序。(2)翻译方案(自顶向下):)翻译方案(自顶向下):在产生式右部的适当位置,插入相应的语义
10、动作,按照分析在产生式右部的适当位置,插入相应的语义动作,按照分析的进程,执行遇到的语义动作。这是一种的进程,执行遇到的语义动作。这是一种动作与分析交错动作与分析交错的实的实现方案。现方案。第13页,本讲稿共29页输入符号串输入符号串 分析树分析树执行执行语义规则语义规则 翻译结果翻译结果翻译步骤翻译步骤()从分析树得到描述结点属性间依赖关系的()从分析树得到描述结点属性间依赖关系的依赖图依赖图,由依赖图得,由依赖图得到语义规则的到语义规则的计算次序计算次序(1)分析输入符号串,建立)分析输入符号串,建立分析语法树分析语法树()进行语义规则的计算,得到翻译结果()进行语义规则的计算,得到翻译结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语义 分析 中间 代码 生成

限制150内