terça-feira, 4 de maio de 2010

Problema- Linguagem não ambigua

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

Nenhum comentário:

Postar um comentário