J'utilise une tasse pour créer un analyseur dont j'ai besoin de ma thèse. J'ai un autre conflit dans ma grammaire. J'ai cette règle de production: et j'ai cet avertissement: p> maintenant, je voulais effectivement que cela puisse changer, donc je suis Jolie ok avec ça, mais mon professeur m'a dit de trouver un moyen de résoudre le conflit. Je suis aveugle. J'ai toujours lu le conflit if / sinon, mais pour moi cela ne semble pas le cas.
Pouvez-vous m'aider? P> P.s.: Identifiant, LPAREN "(" et RÉPAREN ")" Les terminaux, les parlisttes et la commande ne sont pas. P> P>
3 Réponses :
Vous avez deux productions:
command ::= IDENTIFIER command2 command2 ::= LPAREN parlist RPAREN |;
Merci, mais j'ai le même changement / réduit le même conflit, même avec cette solution. Je n'ai pas d'erreurs de syntaxe, donc je suis à peu près sûr que la tasse n'utilise pas un étrange "symbole vide" mais je le contrôle.
Votre problème n'est pas dans ces règles du tout. Bien que Michael Mrozek répond soit une approche correcte pour résoudre le "problème pendling sinon", il ne saisit pas le problème à la main. p>
Si vous regardez le message d'erreur, vous voyez que le conflit de décalage / réduit est présent Je ne peux pas voir votre grammaire, donc je ne peux pas vous aider. Mais votre conflit est probablement lorsque une commande Regardez toutes les autres règles pouvant éventuellement être après la commande code> est suivie d'une règle différente qui commence par un
lparen code>. P>
code> et commencer par
lparen code>. Vous devrez alors consolider les règles. Il y a une très bonne chance que votre grammaire soit erronée pour une entrée spécifique. P>
Oui vous avez raison. Le problème était dans la ligne au-dessus de celui-ci. J'ai résolu ce problème il y a 4 jours. J'ai oublié de mettre à jour la question.
Essayez de définir une priorité:
precedence left LPAREN, RPARENT;