编译原理——关于文法、推导、规约、句柄、语法树、二义性的理解

那年仲夏 提交于 2019-12-01 16:58:29

短语:直观理解,该句型中的连续一部分,这部分能被某个非终结符推出。则这部分是该句型相当于那个终结符的短语。

简单短语:

句柄:一个句型只能有一个句柄。(前提默认非二义性文法)

推导和规约过程理解

推导过程

对每一个句型,该句型一定有一个推导过程(可能不唯一),推导过程一定对应一颗语法树(推导过程可能不唯一,当然语法树也可能不唯一)

推导不唯一,规约不唯一,规范推导

规范推导:最右推导,每次拆最右边的非终结符

规约过程

规约直观理解就是,“剪子树(但留子树的根)【对应到表达式就是用短语替代那个非终结符】,每剪一次对应一次规约,直到剪到只剩树根”

规范规约:最左规约,每次对最左简单短语进行的规约

一个文法的句型,必能通过一次一次的规范推导获得。同时也能通过一次一次的规范规约规约至开始符号,每次规约都对应一个句柄。所以用规约简单短语的方法检查文法是可行的。

规范推导和规范规约互为逆过程:规范推导倒着看就是规范规约

规范句型:由规范推导或规范规约得到的句型

二义性文法——不可判定的

  • 文法所定义的某个句子存在两棵不同的语法树。

  • 文法中存在某个句子,它有两个不同的规范(最右)推导。
  • 文法中存在某个句子,它有两个不同的规范(最左)规约,即在规约中某些规范句型的句柄不唯一。

注意:

  1. 如果存在两种推导,那么不能说明一定是二义性文法,因为两种推导可能对应同一个语法树

  1. 二义性的例子

句型E+E*i存在不同句柄

题型:给一句型,找短语、简单短语、句柄

  1. 画语法树

  2. 对于某个句型的语法树,它的每一颗子树都能找出一个短语(可能重复),枚举所有的子树就能找全。
  3. 在此基础上,再找简单短语和句柄

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!