编译原理 —— CFG的分析树

CFG的分析树的定义

  • 根节点的标号为文法开始符号
  • 内部结点表示对一个产生式 A → β A→β Aβ 的应用,该结点的标号是此产生式左部 A A A 。该结点的子结点的标号从左到右构成了产生式的右部 β β β
  • 叶结点的标号既可以是非终结符,也可以是终结符。从左到右排列叶节点得到的符号串称为是这棵树的产出(yield)或边缘(frontier)
  • 分析树是推导的图形化表示。

句型的短语

  • 给定一个句型,其分析树中的每一棵子树的边缘称为该句型的一个短语(phrase)
  • 如果子树只有父子两代结点,那么这棵子树的边缘称为该句型的一个直接短语(immediate phrase)

举例:

对于 “提高人民生活水平” 这一句子(不含非终结符的句型),提高、人民、生活、水平是直接短语,高人、民生、活水不是直接短语。


二义性文法

什么是二义性文法:

如果一个文法可以为某个句子生成多棵分析树,则称这个文法是二义性的。

出现二义性时,计算机难以编译执行。因此,我们需要定义规则来消除歧义

对于任意一个上下文无关文法,不存在一个算法,判定它是无二义性的;但能给出一组充分条件,满足这组充分条件的文法是无二义性的

  • 满足,肯定无二义性
  • 不满足,也未必就是有二义性的

二义性文法的消除:

(1)不改变文法中原有的语法规则,仅加进一些语法的非形式规定

如 if E then S 优先级较高

(2)构造一个等价的无二义性文法,即把排除二义性文法的规则合并到原有文法中,改写原有的文法


转载地址:

https://www.icourse163.org/learn/HIT-1002123007?tid=1003246005#/learn/announce

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值