Frage

Ich habe jetzt ein ziemes Problem mit Antlr4.

Wann immer ich versuche, Antlr mit dieser RPN-Grammatik zu füttern

generasacodicetagpre.

antlr wird einen Fehler werfen, da plus, minus, mult und div gegenseitig rekursiv hinterlassen werden.
Ich weiß nicht, wie ich das reparieren soll.
(Ich weiß, dass dies auftritt, weil mit diesem Grammatik "Expression" unendlich geschlungen sein könnte, habe ich dieses Problem vorher mit einer anderen Grammatik gehabt, aber ich konnte das alleine beheben)

Meine einzige Lösung wäre, die Grammatik auf folgende Weise einzuschränken

generasacodicetagpre.

Das ist jedoch nicht wirklich das, was ich will, weil ich jetzt mit dem Maximum mit Ausdrücke wie

arbeiten könnte generasacodicetagpre.

und die Grammatik wäre komplexer, als es tatsächlich sein könnte.
Ich hoffe, ihr kannst mir helfen

War es hilfreich?

Lösung

antlr4 unterstützt nur "direkte" linke rekursive Regeln, nicht "indirekt", wie Sie sie haben.

versuchen Sie so etwas:

generasacodicetagpre.

btw, 23+54-* ist kein gültiger RPN-Ausdruck: Es muss mit zwei Zahlen beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top