2010-04-21 19 views
1

E -> A | BEst-ce que cette grammaire est SLR?

A -> a | c

B -> b | Ma réponse est non parce qu'il y a un conflit réduire/réduire, quelqu'un d'autre peut-il vérifier cela?

J'ai aussi obtenu ma réponse en construisant le diagramme de transition, y a-t-il une façon plus simple de trouver cela?

Merci pour l'aide!

P.S Une descente récursive serait-elle capable d'analyser ceci?

Répondre

3

Vous avez raison - à partir d'un 'c' dans l'entrée, il n'y a aucun moyen de décider s'il faut traiter cela comme un 'A' ou un 'B'. Je doute qu'il y ait quelque chose qui puisse vraiment l'analyser correctement - c'est simplement ambigu. L'utilisation d'un autre type d'analyseur n'aidera pas; vous avez vraiment besoin de changer la langue.

Il existe quelques méthodes formelles pour détecter de telles ambiguïtés, mais je peux difficilement m'imaginer avec elles pour une grammaire aussi petite. Un moyen facile de repérer ce problème particulier est d'organiser mentalement dans un arbre:

alt text

Les deux lignes à venir sur la case « c » représente le conflit de réduire/réduire. Il n'y a aucune raison de préférer une route de 'c' à 'E' plutôt que l'autre, donc la grammaire est ambiguë.

+0

Merci pour l'astuce! – Mike

Questions connexes