解释如何将 CFG 转换为 CNF
CFG代表上下文无关文法,CNF代表计算理论中的乔姆斯基范式。
上下文无关语法(CFG)
上下文无关文法(CFG)是一种形式文法,用于生成给定形式语言中所有可能的字符串模式。
它被定义为四个元组-
G=(V,T,P,S)
在哪里,
G是一个文法,由一组产生式规则组成。它用于生成语言的字符串。
T是最终的终结符集。它用小写字母表示。
V是最后一组非终结符。用大写字母表示
P是一组产生式规则,用于将字符串中的非终结符(产生式左侧)替换为其他终结符(产生式右侧)。
乔姆斯基范式(CNF)
如果产生式规则满足以下条件之一,则上下文无关文法在CNF中
如果有开始符号生成ε。示例-A->ε
如果一个非终结符产生两个非终结符。示例-S->AB
如果一个非终端产生一个终端。示例-S->a
转换
按照下面给出的步骤成功地将CFG转换为CNF:-
步骤1 -从右侧(RHS)消除开始符号
如果开始符号S在任何产生式的右侧,
创建一个生产如下-
S1->S
其中,S1是新的开始符号
第2步 -在语法中尝试删除null、unit和无用的产生式。
步骤3-如果终端与其他非终端或终端存在,则从生产的RHS中消除终端。
示例-S->aA可以分解如下-
S->RA
R->a
最后,它只是S->aA而已。
步骤4-消除具有两个以上非终端的RHS。
示例-S->ABS可以分解如下-
S->RS
R->AB