将语法转换为乔姆斯基普通形式

时间:2013-10-11 15:34:54

标签: computer-science

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

1 个答案:

答案 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->aZ->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->ABE->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

合并S0S的规则。

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正常形式的语法。