- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 语法制导翻译和 中间代码生成 语义分析 编译程序的语义处理工作: 静态语义分析—审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义。 动态语义—执行翻译、生成目标代码 两种翻译模式:生成中间代码形式、直接生成目标代码。 中间代码—中间语言:是介于源程序语言和机器语言之间的一种表示形式。 语义学 语义形式化、语义建模 文法模型—属性文法 命令式或操作式模型—操作语义学 公理式模型—公理语义学 应用式模型—指称语义学 目前在实际应用中比较流行的语义描述和语义处理的方法主要是属性文法和语法制导翻译 8.1 属性文法(attribute grammar) 一个属性文法包括一个上下文无关文法和一系列语义规则,这些语义规则附在文法的每个产生式上。 语法制导翻译是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。 属性文法 一个属性文法是一个三元组 A=(G,V,F) G 上下文无关文法 V 属性的有穷集 F 关于属性的断言或谓词(语义规则)的有穷集。 每个属性和非终结符或终结符相联 每个断言与文法的某产生式相联,只引用该产生式相联的属性。 属性文法 这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等。 属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。 属性的计算规则称为语义规则 属性文法 表达式文法:E?T1+ T2|T1 or T2 T?num|true|false E ?T1 + T2 {T1.t =int AND T2.t =int} E ?T1 or T2{T1.t =bool AND T2.t =bool} T ?num{T.t := int} T ?ture{T.t := bool} T ?false{T.t := bool} 属性文法 使用 N.t 的形式表示与非终结符N相连的属性t。 T.t的值为int或bool。 与非终结符E的产生式相连的断言表明:两个T的属性必须相同。 继承的和综合的属性 属性通常分为两类:综合属性和继承属性 综合属性用于“自下而上”传递信息, 继承属性用于“自上而下”传递信息。 非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。 终结符只有综合属性。 继承的和综合的属性 属性文法中,对应每一个产生式 A?? 都有一套与之相关联的语义规则,每条规则的形式为:b:=f(c1,c2,……,ck) 其中:f是一个函数,b和c1,c2,……,ck是该产生式文法符号的属性。 如果b是A的一个属性, c1,c2,……,ck是产生式右部文法符号的属性或A的其它属性,则称b是A的综合属性。 继承的和综合的属性 (2) 如果b是产生式右部某个文法符号X的一个属性,并且c1,c2,……,ck是A或产生式右部任何文法符号的属性,则称b是X的继承属性。 在两种情况下,都称属性b依赖于属性c1,c2,……,ck 属性文法的例 产生式 语 义 规 则 L?E Print(E.val) E?E1+T E.val:=E1.val+T.val E?T E.val:=T.val T?T1 * F T.val:=T1.val ? F.val T?F T.val:=F.val F?(E) F.val:=E.val F?digit F.val:=digit.lexval 非终结符E、T及F都有一个综合属性val 符号digit有一个综合属性,它的值由词法分析器提供。 与产生式L→E对应的语义规则仅仅是打印由E产生的算术表达式的值的一个过程,我们可认为这条规则定义了L的一个虚属性。 某些非终结符加下标是为了区分一个产生式中同一非终结符多次出现 属性文法的例 . 继承属性 例8.2 描述说明语句中各种变量的类型信息的语义规则,L.in是继承属性。 8.2 语法制导翻译概论 一个翻译是符号串对的一个集合。在一个编译程序定义的翻译中,符号串对是源程序和目标程序。 各个编译阶段定义一个翻译 词法分析:(字符串,单词串) 语法分析:(单词串,语法树) 代码生成:(语法树,汇编语言) 语法制导翻译 直观地说,一个语法制导翻译的基础是一个文法,其中翻译成分依附在每一产生式上。 根据每个产生式所对应的语义子程序(或语义规则描述的语义动作)进行翻译 语法制导
您可能关注的文档
最近下载
- 2024年浙江省高一新学考调研考试生物模拟试卷二(含答案详解).pdf VIP
- 服装概论总结.doc VIP
- 高中生态学课程:校园花坛花卉生态教育课程效果评价教学研究课题报告.docx
- 管理学论文5000字.docx VIP
- 新修订特种作业(高处安装、维护、拆除作业)考试题库(核心题版).pdf VIP
- 《服装设计基础》知识考试复习题库资料(含答案).pdf VIP
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题荟萃附答案.docx
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题荟萃附答案.docx
- 2024最新传唤证模板.doc VIP
- 2025年医学高级职称-精神病学(医学高级)考试近5年真题集锦(频考类试题)带答案.docx
文档评论(0)