2

Ceci est la grammaire:Conflit dans l'analyse syntaxique CLR

S' -> S 
S-> aBc|bCc|aCd|bBd 
B ->e 
C ->e 

I analysables dans CLR puis réduire/réduire les conflits a surgi. Que faire ensuite? J'ai joint mon problème résolu ci-dessous.

Parse Table

This is process

Répondre

3

Tout le monde s'il vous plaît me dire ce qu'il faut faire

Err ... fixer le conflit?

Il est très clair, même juste des deux dernières productions, lorsque l'analyseur rencontre c ou d après e:

B -> e . {c, d} 
C -> e . {c, d} 

simple préanalyse ne suffit pas pour déterminer si condition ci-dessus devrait permettre de réduire à B ou C.

Les générateurs d'analyseur ont généralement une solution en prenant celle qui apparaît en premier dans la grammaire, mais ce n'est pas toujours un bon cas. Dans la grammaire ci-dessus, si cette solution est prise, l'analyseur ne sera pas en mesure d'analyser et de réduire à B.

Je suggère de changer la grammaire de sorte qu'aucun conflit ne se produise. Vous savez que toute la grammaire ne peut produire que des aec, bec, aed et bed. Voyez ce qu'il y a de mieux dans les séquences à réaliser en production séparée qui va réduire de façon unique.

+1

Il a réduire/réduire les conflits.Alors, nous n'avons pas de solution pour cela? Plutôt que de changer la grammaire. – Niroj

+2

Eh bien ... certains générateurs d'analyseurs vous permettent de spécifier la préséance de certains jetons, mais puisque vous apprenez la théorie des langages et l'automate, je ne pense pas que vous soyez autorisé à intégrer un concept spécifique à l'implémentation dans la tâche. Voici un lien vers l'article sur le cas de bison: http://www.gnu.org/software/bison/manual/html_node/Reduce_002fReduce.html – LeleDumbo