编译原理-金成植--第7章-面向语法的语义描述.pptVIP

编译原理-金成植--第7章-面向语法的语义描述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 面向语法的语义描述 语义处理的抽象描述-语法制导方法 动作文法及其应用 属性文法及其应用 1.动作文法 动作文法:产生式右部带有动作符的文法 动作符: 区别于语法符号的一种符号, #Name 可出现于产生式的右部的任何地方 没有语法意义,只代表某种语义动作,可看作是无参的语义子程序的名字 动作文法的产生式: L ? ?1 X1 ?2 X2 ………?k Xk ?k+1 其中?i表示动作符,Xi表示语法符号,当然可以没有动作符 1.动作文法 动作文法的例子: 给定下图所示的文法GS,试写出一个动作文法,它描述这样一个处理器:输入0、1串,求其中0和1的出现个数,并分别赋给变量n0和n1,最后将其结果打印出来。 1.动作文法 动作文法的应用:凡是和程序文本有关的语义动作,均可用动作文法来描述 尾动作文法:动作符只出现于产生式末尾的动作文法 动作文法的实现:依赖于文法的实现方式,可以是递归下降,LL,LR实现 2.动作文法的LL实现 LL动作文法: 动作文法满足LL(1)文法的条件。 实现组成: LL(1)分析表,LL驱动器,语义子程序。 驱动程序的分类: 不带语义栈控制:由用户实现语义栈的管理,即将语义栈的处理写在语义子程序中。 带语义栈控制:由驱动器来控制语义栈。 2.带语义栈控制的LL驱动器 LRCT指针: LeftIndex:指向当前产生式左部符号的语义栈地址 RightIndex:指向当前产生式右部的语义栈基地址 CurrentIndex:指向当前符号的语义栈地址 TopIndex:指向当前第一自由地址 带语义栈控制的LL(1)驱动器 动作文法的LR实现 尾动作文法的LR实现: 不带语义栈控制: 归约动作执行前先执行语义动作。 带语义栈控制: 语法栈和语义栈同步: 移入时:输入符压入语法栈中,输入符 的语义信息压入语义栈中; 归约时:执行语义动作,语法栈和语义栈同时 退N个,将产生式左部压入语法栈, 语义信息压入语义栈中。 动作文法的应用 用动作文法描述表达式计算: 动作文法的应用 用动作文法描述表达式抽象树的构造: 动作文法的应用 用动作文法描述语句抽象树的构造: 抽象动作文法 抽象变量:E.val = E1.val+E2.val 特点是:用抽象概念描述语义值,不是用存储概念表示 抽象动作文法:含有抽象变量的动作文法 特点是:抽象度高,语义表达清晰,自动化程度高 抽象尾动作文法例: 属性文法 用于描述语言的静态语义 主要思想: 对每个语法符号定义相关属性; 对每个产生式定义属性求值规则 例:val属性 E → n E.val:= n.val E → (E1) E.val:= E1.val E → E1 + E2 E.val:= E1.val+E2.val 继承属性和综合属性 继承属性相当于输入属性,综合属性相当于输出属性 从属性语法树的角度来说,结点的继承属性值由其父亲节点和兄弟结点的属性值决定,综合属性值由本节点的继承属性和儿子节点的属性值决定。 属性定义 定义属性名字 定义属性类型(数据结构) 定义属性类别(继承/综合) 例: E ↓senv :SEnv ↓denv :DEnv ↑ etype :EType ↑eval :EValue id ↑name :String n ↑val :integer 属性变量 X.a,其中X是语法符号,a是X的一个属性符号(继承,综合) 属性变量的类型取决于其中属性符号的类型 属性规则 L ?X1 X2 …… Xk ∥ X1.i = e1 ……… Xk.i = ek L.s = e0 ∥ 属性规则 属性规则次序没有顺序关系; 属性规则并不表示在此刻要进行属性值的计算; Xi的属性值可依赖于其后符号的属性值; 没有定义产生式右部符号综合属性值的属性规则; 没有定义产生式左部符号继承属性值的属性规则。 属性文法例1(不带变量表达式) 属性文法例2(带变量表达式) 有变量,需

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档