第章属性文法与语义分析.pdf

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

第五章 属性文法与语义分析 • 语义处理方法 目前在实际应用中比较流行的语义处理的方法主要是属性文法和 • 程序设计语言的语义 语法制导翻译方法,应用最广的是属性文法。属性是描述语义的 静态语义是指在编译阶段能检查的语义。它是 有效方法,由此发展而来的属性文法被认为是上下文无关文法的 扩充。 对程序约束的描述,可以分为类型规则和作用 • 属性文法的基本思想 域/可见性规则两大类。 目是将语言结构的语义以属性(attribute)的形式赋予代表此结构 动态语义是只有在目标码的运行阶段才能检查 的文法符号,而属性的计算以语义规则(semantic rules)的形 的语义。 式赋予由文法符号组成的产生式。在进行语法分析推导或归约的 同时通过语义规则实现对属性的计算,以达到对语义的处理。 • 编译程序的语义处理工作: • 属性文法侧重对语义的抽象说明,而语法制导翻译方法 静态语义检查 /生成某种中间代码 /解释执行 则侧重实现。 动态语义 产生式 属性文法 语法制导翻译方案 虽然语义的形式化工作已经有相当的进展, L →E print(E.post) print_post(post); 但由于语义的复杂性,使得语义分析不能象语法 E→E1 + E2 E.post:=E1.post || E2.post || +; post(k):=+; 分析那样规范。到目前为止,语义的形式化描述 k := k+1; 并没有语法的形式化描述那样成熟,使得语义的 E →num E.post := num.lexval; post(k):=lexval; k:=k+1; 描述处于一种自然语言的描述或者半形式化描述 的状态。而没有基于数学抽象的形式化描述,就 (1) 属性文法仅考虑“做什么”:用抽象的属性表示文法符号所代表的语 义,如.post为表达式的后缀式表示;用抽象的算符表示语义的计算,如 很难设计出基于数学模型的统一算法来实现语义 用‘||’表示两个子表达式后缀式的连接运算。属性和运算的具体实现细 分析器的自动生成。 节,不在属性文法的考虑范围。 词/语法分析器生成器LEX和YACC为使用者 (2) 语法制导翻译方案不但需要考虑“做什么”还需考虑“如何做”:例中 提供用于描述属性的伪变量和语义栈,以支持语 翻译方案设计了一个数组post来存放表达式的后缀式。另外,在实现中 还要考虑计数器k 的初值等相关问题。 法制导翻译,但是语义规则的书写,仍属于普通 (3) 忽略实现细节,属性文法和翻译方案的作用是等价的。 程序设计的范畴。 5.1 属性文法是一个三元组: A=(G, V, F)

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档