上下文无关文法的范式转换
1. 消除空产生式问题
在处理上下文无关文法时,有时需要考虑消除空产生式。例如,对于文法:
S → aS/ A
A → aA/ є
在这个文法中,存在空产生式 A → є 。但该文法生成的语言集合中包含空串,其生成方式为 S → A → є 。由于空串在语言集合中,所以这个空产生式不能从该文法中移除。
2. 文法的范式
- 范式定义 :对于一个文法,产生式的右部(RHS)可以是变量和终结符的任意字符串,即
(VN ∪ Σ)*。当文法的每个产生式都具有特定形式时,该文法称为处于范式。也就是说,在产生式的右部,不允许使用(VN ∪ Σ)中的任意成员,只允许使用特定成员,但这些限制不能妨碍文法的语言生成能力。 - 范式的用途 :将文法转换为范式后,文法的每个产生式都转换为特定形式,这有助于设计算法来回答某些问题。例如,如果将上下文无关文法(CFG)转换为乔姆斯基范式(CNF),可以轻松判断该文法生成的语言
L(G)是否有限。此外,从转换为 CNF 的 CFG 生成的语法分析树总是二叉树。同样,如果将 CFG 转换为格雷巴赫范式(GNF),可以轻松设计接受该文法生成语言的下推自动机(PDA)。
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



