Fiz uma pergunta pedindo que eu escolhesse o idioma inerentemente ambíguo entre um conjunto de opções.
A solução disse que é ambíguo enquanto não. Gerou a seguinte gramática para
Agora, para a string abcd
, ela gerará duas árvores de análise; por isso é ambíguo.
Mas uma gramática similar pode ser criado para demais
E também irá gerar duas árvores de análise para abc
. Por que não é ambíguo então?
Se você precisar, pode ser escrito como
Respostas:
A pergunta está errada. A segunda língua também é inerentemente ambígua. A maneira usual de provar isso é a seguinte. Suponha que tivesse uma gramática inequívoca. Seja a constante prometida pelo lema de Ogden e considere a palavra . Marque as posições de e aplique o lema de Ogden para bombear esta palavra com a palavra (o lema de Ogden nos permite bombeie para e desde .) Da mesma forma, podemos obter a mesma palavra bombeandoL2 p ap!+pbpcp bpcp ap!+pbp!+pcp!+p bqcq q≤p q|p! q≤p apbpcp!+p . As duas árvores de análise são diferentes, pois na primeira a maioria dos está "intimamente relacionada" (em termos de ancestral menos comum) com s, e na segunda é o contrário.b c
fonte
Você está certo em duvidar, também é inerentemente ambíguo. Foi até usado como "protótipo de uma linguagem inerentemente ambígua" por Flajolet (logo no início da seção 2).L2
fonte