第八章-语法制导翻译PPT.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章-语法制导翻译PPT

第八章语法制导翻译和中间代码生成 8.1概述 8.2属性文法和语法制导翻译 8.3中间代码 概述 语义处理 程序设计 语言的语义 静态语义是对程序约束的描述,这些约束无法通过抽象语法规则来妥善地描述,实质上就是语法规则的良形式条件,它可以分为类型规则和作用域/可见性规则两大类 类型相容性 变量先声明后引用 名称相关要求 动态语义 程序单位描述的计算 编译程序的语义处理工作 静态语义审查 解释执行动态语义(计算)生成代码... 语 法 分 析 后 的 源 程 序 T 语义处理 概述 语义形式化 语义建模 文法模型---- 属性文法 命令式或操作式模型 ----- 操作语义学 应用式模型-----指称语义学 公理式模型-----公理语义学 操作语义学 操作语义学,是形式语义学的一个分支。程序设计语言的实施是在具体的计算机系统中按照语言的语义编制语言的翻译程序,将语言中各个成分翻译成计算机系统中相应的一组操作。语言在计算机系统中的一种实施一旦完成,那么对这个计算机系统而言,语言各个成分的含义也就完全确定了。因此语言的实施也可用来定义语言的语义,即将语言成分所对应的计算机系统的操作作为语言成分的语义,这种语义被称作操作语义。由于语言的语义应该是标准的,不应依附于一个特定的计算机和一种具体的实施,因此操作语义学是用解释执行程序的抽象的机器来定义语言的语义。  指称语义学  (denotational semantics)   形式语义学的一个分支。人们用程序设计语言编制程序,命令计算机系统去加工数据。不同的计算机系统有不同的结构,因此对同一个命令的执行过程可以不同,但最终效果应该相同。指称语义学方法认为不应该将程序设计语言中各个成分的执行过程计入语言成分的语义中。语言成分的语义,应该是执行语言成分所要得到的最终效果。这是语言成分所要表达的含义,是语言成分本身所固有的,不因计算机系统的不同而改变。执行语言成分产生的最终效果被看作是语言成分的所指,称作为语言成分的指称物。这种语义学以语言成分的指称物作为语言成分的语义,故名为指称语义学。   指称语义学中用于定义语义的指称物多数是传统的数学对象,如整数、集合、映象等,故早期又称为数学语义学。这一名称容易使人误认为其他形式语义学分支是非数学的,后已不再使用。 属性文法和语法制导翻译 虽然形式语义学(如指称语义学、公理语义学、操作语义学等)的研究已取得了许多重大的进展,但目前在实际应用中比较流行的语义描述和语义处理的方法主要还是属性文法和语法制导翻译方法 属性文法 属性文法(attribute grammar)是一个三元组:A=(G,V,F),其中 G:是一个上下文无关文法 V:有穷的属性集,每个属性与文法的一个终结符或非终结符相连,这些属性代表与文法符号相关信息,如它的类型、值、代码序列、符号表内容等等 .属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。 F:关于属性的属性断言或一组属性的计算规则(称为语义规则) . 断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性. 属性有两种 继承的和综合的属性 属性通常分为两类:综合属性和继承属性。简单地说,综合属性用于“自下而上”传递信息,而继承属性用于“自上而下”传递信息。 出现在产生式左边的继承属性和出现在产生式右边的综合属性不由所给定的产生式的属性计算规则进行计算,它们由其它产生式的属性规则计算或者由生计算器的参数提供。 A?X1 X2 …Xn A的综合属性,计算 S(A):=f(I(X1),…,I(Xn)) Xj的继承属性,计算 T(Xj):=f(I(A),... I(Xn)) 1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性. 2)终结符只有综合属性. 在一个属性文法中,对应于每个产生式A??都有一套与之相关联的语义规则,每条规则的形式为b:=f(c1,c2…ck) 这里,f是一个函数,而且或者 (1)b是A的一个综合属性并且c1,c2…ck是产生式右边文法符号的属性;或者 (2)b是产生式右边某个文法符号的一个继承属性并且c1,c2…ck是A或产生式右边任何文法符号的属性。 在两种情况下,我们都说属性b依赖于属性c1

文档评论(0)

djdjix + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档