编译原理2.3.2-语法树及二义性.ppt

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

2.3.2 语法分析树与二义性 上下文无关文法及其语法树 用上下文无关文法描述程序语言 句型和语法树 一个句型对应的不同推导序列 文法二义性 有关文法的实用限制 (文法化简) 1.用上下文无关文法描述程序语言 E→i | E+E | E*E | (E) 语句 →条件语句 |赋值语句 | 循环语句 赋值语句 → i:=E 条件语句 →if条件 then语句 | if条件〉then语句 else语句 说明语句 →var 变量列表:integer 变量列表 →i | 变量列表, i 2. 句型和语法树 (推导树) 复习: 句型、句子、推导 句型的推导 文法G: E→E+E| E*E| (E)| E 句型 (i*i+i) 补充例 G[S]: S→aAS A→SbA A→SS S→a A→ba 补充: 定理 G为上下文无关文法, α≠ε 对于有S α,当且仅当 G有以α为结果的一棵语法树 上下文无关文法 句型 ? 语法树 G[S]:S→aAS A→SbA A→SS S→a A→ba 3.一个句型对应的不同推导序列 最左推导 最右推导 (规范推导) 最左归约 (规范规约) 最右推导的逆过程 最右归约 最左推导的逆过程 4. 文法二义性 一个句型是否只对应唯一的一棵语法树? G: E→i | E+E | E*E | (E) 补充例: 句型: i*i+i P31例: 句型: (i*i+i) 二义 Ambiguous (1) 什么是文法的二义性 (2) 先天二义的语言 (补充) (3) 文法的二义性和语言的二义性 (4) 二义性的判定 (5) 二义性的消除 (1) 什么是文法的二义性 p32 如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的 (2) 先天二义的语言 (补充) 如果产生上下文无关语言的每一个文法都是二义的,则说此语言是先天二义的 . (3) 文法的二义性和语言的二义性 二者是不同的概念 例如: 两个等价的文法,一个是二义的,一个是非二义的,但产生的语言是相同的 二义性的判定 如何证明一个文法是二义的? 二义性问题不可判定 不存在一个算法,它能在有限步骤内,确切判定任给的一个文法是否为二义的 我们所能做的事是为无二义性寻找一组充分条件 存在性证明 只要找到一个句子, 该句子对应两个不同的语法树, 即证明该文法是二义的. 二义性证明 举例 : 证明以下语句是二义的 〈语句〉→ if〈条件〉then〈语句〉 | if〈条件〉then〈语句〉else〈语句〉 | 其他语句 (5). 二义性的消除 G:E→E+E | E*E | (E) | i G′: E→ T | E+T, T→ F | T*F, F→ (E) | i 5.有关文法的实用限制 (文法化简) 不含有害规则: P→P 每个非终结符P必须有用处 存在推导 S αPβ (可到达) 存在终结符串γ∈VT* , 使得 P γ (可终止) 补充例: 文法化简 G: (1)S→Be (2)B→Ce (3)B→Af (4)A→Ae (5)A→e (6)C→Cf (7)D→f 删除有害规则 删除不可到达 (7) D→f 删除不可终止 (6) C→Cf (2) B→Ce 臂台仲艳辩氖度蛊壁骸渤构陶资赘颗格檄汕糠掇唱肯悔尺煌闷茵舅九让书编译原理2.3.2-语法树及二义性编译原理2.3.2-语法树及二义性 补充例 粳附瑟诬袱讶串叶慌纠昨宇佐尾猖伸谆秃稽筑虞固扑投黔吹拙纤古笺阶嵌编译原理2.3.2-语法树及

文档评论(0)

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

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

1亿VIP精品文档

相关文档