上下文无关文法及其语法树
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S
x A
y
11
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
* (3)
)
E + E
它所对应的语法树件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
二、二义性(1/2)
1. 定义:
一个文法的某个句子对应两棵不同的语法树,则这个文法是二义 的。 或 一个文法的某个句子有两个不同的最左(右)推导,则这个文法 是二义的。 2. 区别
G’: E→ T | E+T T→ F | T*F
F→ (E) | i
9
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
3.6 句型的分析
句型分析的任务就是按文法的产生式,识别输入的符号是否是 该文法的句型。语法树——是句型推导过程的几何表示,可以十分 直观的显示某句型的结构。因此在句型时,对输入符号串构造语法 树,以此识别它是否是该文法的一个句型(或句子)。因此,语法 树又可称为语法分析树或分析树。我们把完成句型分析的程序称为 分析程序或识别程序,分析算法又称识别算法。
分析算法又分为:
从左到右分析算法;
从右到左分析算法;
自上而下的分析法
自下而上的分析法
10
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
自上而下的分析法
基本思想:从文法的开始符号出发,反复使用各种产生式,寻 找“匹配”输入符号串的推导。即对任何输入符号串,从文法的开 始符号(根结)出发,自上而下地为输入串建立一棵语法树,直到 语法树结果正好是输入的符号串为止。 例如:文法G[S]: S→ xAy 文法的一个句子。 解: S x (1) A y (2) A→ ** | *,识别输入串x*y是否是该 S
最左推导是指:任何一步α=> β都是对α中的最左非终结符进行替换。
同样,可定义最右推导(又称规范推导):任何一步α=>β都是对α中的最 右非终结符进行替换。 由规范推导所得到的句型称为规范句型。
5
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
语法树的特点
一棵语法树是这些不同推导过程的共性抽象,是它们 的代表。一棵语法树完全等价于一个最左(右)推导, 这种等价性包括树的步步生长和推导的步步展开是完 全一致的。
例1 文法G= ( {E}, {+, *, i , (, )}, P, E),其中P为:
E→ E+E | E*E | (E) | i
对该文法关于(i*i+i)的推导的语法树如下所示:
2
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
接语法树构造举例
代次
E(根) 1
文法和语言
一个句型是否只对应唯一的一棵语法树?
例如 对于文法G[E]: E→ E+E | E*E | (E) | i,关于(i*i+i)存在一个 与前面不同的最左推导: E(根) E (E)
(E*E) (i*E) (i*E+E) (i*i+E) (i*i+i)
( E i
E * E
• 文法的二义性:存在两个不同文法G(二义)、G’(无二义),却有 L(G)=L(G’),即产生语言相同。
• 语言的二义性
8
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
二义性其它问题
人们已证明,二义性问题是不可判定的,即不存在一个算法, 它能在有限步骤内,确切地判断一个文法是否是二义的。我们所能 做的就是为无二义性寻找一些充分条件,例如对文法G[E]: E→ E+E | E*E | (E) | i 修改,规定运算符“+”与“*”的优先关系和结合 规则,设“*”的优先性高于“+”,且服从左结合。
(
E E i *
E
+ E i
)
E i
2 3
4
5
3
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
语法树的问题分析
(1)允许产生同名结点(反映递归性);
(2)没有后代的结点为端末结; (3)语法树不能反映生养后代的先后;
(4)一棵语法树表示了一个句型种种可能的(但未必是所有 的)不同推导过程。
文法和语言
上下文无关文法及其语法树
一、语法树(推导树)
1. 直观定义:用图表示上下文无关文法句型的推导的直观方法。 语法树有助于理解一个句子的语法层结构的层次,语法树通常表示
成一棵倒立的树,根在上,枝叶在下。
2. 形式定义
对文法G=( VN, VT, P, S)相关联的语法树满足以下4个条件:
(1)根结点由开始符号S所标记;
4
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
文法和语言
最左推导/最右推导/规范句型
注意:从一个句型到另一个句型的推导过程往往是不唯一的。
例如 E+E (i+i):
(a)E+E => E+i => i+i ——最右推导
(b)E+E => i+E => i+i
——最左推导
例:推导(i*i+i) 最左推导:E =>(E) =>(E+E)=>(E*E+E)=>(i*E+E)=>(i*i+E)=> (i*i+i) 最右推导:E=>(E)=>(E+E)=>(E+i)=>(E*E+i)=>(E*i+i)=>(i*i+i) 但两种推导的语法树相同。
6
软件教研室 徐慧英 吕振洪来自 中国最大的资料库下载
中国最大的资料库下载
文法和语言
语法树构造的过程
从根结点S开始推导,当非终结符被它的某个候选式所替 换时,这个非终结符的相应结就产生出下一代新结,候选式 中自左向右的每个符号对应一个新结,并用这些符号标记其 相应的新结。每个新结与其父结点间都有一条连线。在一棵 语法树生长过程中的任何时刻,所有那些没有后代的端末结 自左向右排列起来就是一个句型。
(2)每个结点都有一个标记,此标记是V(即VN∪ VT)的一个符号; (3) 非终结符VN中的结点至少有一个除它自己以外的子孙结点;
1
(4)对产生式A→ A1 A2… Ak,结点A1 , A2 ,… , Ak是结点A的直接子孙, 软件教研室 徐慧英 吕振洪来自 顺序与产生式相同。