S - > A | ABa | AbA的
A - > Aa |拉姆达
B - > Bb | BC
C - > CB | CA | BB
我需要帮助将这个语法改为chomsky normal,这是我想出的答案,但我把它带给了我的教授,他告诉我这是错的。他拒绝告诉我如何解决它,因为它必须在以后的等级上交。感谢所有帮助。
GL:S→ZA | AW A→AA | a B→AX | YY Z→a Y→b X→YB W→BZ
答案 0 :(得分:1)
我的知识可能生锈,但我会尽力帮助。
根据维基百科,
在形式语言理论中,如果所有的制作规则都采用以下形式,则无语境语法被称为乔姆斯基正规形式:
- A - > BC,或
- A - > α,或
- S - > ε
其中A,B,C是非终结符号,α是终端符号,S是起始符号,ε是空字符串。此外,B和C都不是起始符号。
我正在考虑你的lambda是epsilon ε
。让我们将你的语法重新改写为
S -> A
S -> ABa
S -> AbA
A -> Aa
A -> ε
B -> Bb
B -> BC
C -> CB
C -> CA
C -> bB
然后,添加一个新变量S0
作为新的起始变量,因此它变为
S0 -> S
S -> A
S -> ABa
S -> AbA
A -> Aa
A -> ε
B -> Bb
B -> BC
C -> CB
C -> CA
C -> bB
接下来,删除ε
规则,使其成为
S0 -> S
S -> A
S -> ABa
S -> AbA
A -> Aa
B -> Bb
B -> BC
C -> CB
C -> CA
C -> bB
引入新变量Y->a
和Z->b
。
S0 -> S
S -> A
S -> ABa
S -> AbA
A -> Aa
B -> Bb
B -> BC
C -> CB
C -> CA
C -> bB
Y -> a
Z -> b
重写RHS规则:
S0 -> S
S -> A
S -> ABY
S -> AZA
A -> AY
B -> BZ
B -> BC
C -> CB
C -> CA
C -> ZB
Y -> a
Z -> b
引入新变量D->AB
和E->AZ
,因此它变为
S0 -> S
S -> A
S -> DY
S -> EA
A -> AY
B -> BZ
B -> BC
C -> CB
C -> CA
C -> ZB
D -> AB
E -> AZ
Y -> a
Z -> b
对于S->A
,复制RHS上出现S
的一条规则并内联规则:
S0 -> S
S0 -> A
S -> DY
S -> EA
A -> AY
B -> BZ
B -> BC
C -> CB
C -> CA
C -> ZB
D -> AB
E -> AZ
Y -> a
Z -> b
合并S0
和S
的规则。
S0 -> DY
S0 -> EA
S0 -> AY
A -> AY
B -> BZ
B -> BC
C -> CB
C -> CA
C -> ZB
D -> AB
E -> AZ
Y -> a
Z -> b
现在我们有chomsky正常形式的语法。