- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理》第章语法制导翻译
编译原理
武汉大学计算机学院
编译原理课程组
语义分析
语法正确并不能保证含义(语义)正确。
依据语言的语义规则对语法分析得到的语法结构进行静态
语义检查 (确定类型、类型和运算合法性检查、识别含义与相
应的语义处理及其它一些静态语义检查),并用另一种内部形
式表示出来,或者直接用目标语言表示出来。
语义分析
程序的含义涉及两方面:数据结构的含义与控制结构的含义。
数据结构的含义——名字的含义(类型正确性检查)。
控制结构的含义——语言自身定义(形式化与非形式化)。
语义分析
语义分析的基本功能:
◆ 确定类型——数据类型(词法分析)
◆
◆ 类型检查——运算合法性、运算对象类型一致性或相容性
◆
◆ 识别含义——语法成分的含义(中间代码、目标代码)
◆
◆ 其他静态语义检查——控制流检查等
◆
语义分析
一般情况下,语义分析仅产生中间代码,因为:
◆ 词法分析与语法分析简单、比例小,有利于难点分解;
◆
◆ 有利于中间代码优化;
◆
◆ 有利于程序的移植;
◆
◆ 有利于任务的分解、人员的组织。
◆
语义分析
语义是上下文有关的,进行形式化很困难。
尚无公认的、广泛被接受与流传的语义形式化系统用于描
述程序设计语言的语义。
尚未形成可用于编译程序构造的、系统的形式化语义算法
或典型技术。
语法制导翻译技术有利于语义分析与目标代码生成的形式
化走向实用。
第8章 语法制导翻译
◆ 属性文法
◆
◆ 目标代码结构
◆
◆ 中间代码
◆
◆ 控制语句的翻译
◆
8.1 语法制导翻译
1. 属性文法 (Attribute Grammar)
属性可以是需要表达或涉及的任何内容,如名字的类型、名字
的值、名字的存储地址、生成的代码以及查填符号表的操作、打印
出错信息的操作、生成代码的操作等。
属性值的计算,由语法分析过程中产生的语法分析树相应结点
的环境推导出来。
为产生式附加子程序,用于计算文法符号的属性值。
8.1 语法制导翻译
1. 属性文法 (Attribute Grammar)
对某个上下文无关文法,为每个文法符号指定一组属性,且为
文法中的每个产生式附加一段属性计算方法——语义规则/语义动作
/语义子程序,则称该文法为属性文法。
8.1 语法制导翻译
1. 属性文法——举例
G[L]:
L →En print(E.val);
E →E +T E.val:=E .val+T.val;
1 1
E →T E.val:=T.val;
T →T *F T.val:=T .val*F.val;
1 1
T →F T.val:=F.val;
F →(E)
文档评论(0)