Pessoal, surgiu um problema.
Considere a regra {b*}{b*}a -> \1a\2
De acordo com o método de conversão para gramática, teríamos:
G=ABC
A=bA
e associado com o índice 1
B=bB
e associado com o índice 2
C=a
Que pode ser reescrita como:
R1 G=MC
R2 M=AB
R3 A=bA associado com o índice 1
R4 A=e associado com o índice 1
R5 B=bB associado com o índice 2
R6 B=e associado com o índice 2
R7 C=a
só frescura, não mudou nada.
Agora fazendo o parser sobre a cadeia bba temos: R1 -> MC -(R2)> ABC -(R4)> BC -(R5)> bBC -(R5)> bbBC -(R6)> bbC -(R7)> bba
A sequencia fica R(1,2,4,5,5,6,7), porém teríamos a mesma cadeia com as derivações R(1,2,3,4,5,6,7), ou seja, a gramática é ambigua para este método.
Li isto no livro linguagens formais. Em uma linguagem nao-ambigua existe apenas uma unica arvore de derivacao.
logo, nosso sistema sera ambiguo e nosso parser tera q funcionar sobre gramatica ambigua
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário