Ich habe diese einfache Grammatik:
%Vor%Wenn ich es ausführe sagt es:
Die Entscheidung kann Eingaben wie '*' mit mehreren Alternativen 1,2
abgleichenDie Entscheidung kann Eingaben wie '/' mit mehreren Alternativen 1,2
abgleichenIch kann die Zweideutigkeit nicht erkennen. Wie zeigen die roten Pfeile? Jede Hilfe wäre willkommen.
Nehmen wir an, Sie möchten die Eingabe analysieren:
%Vor%Der Parser, der von Ihrer Grammatik generiert wurde, könnte diese Eingabe in die folgenden Syntaxbäume einpassen:
und:
(Ich habe die Doppelpunkte weggelassen, um die Bäume klarer zu halten)
Beachten Sie, dass das, was Sie sehen, nur eine Warnung ist. Indem man ANTLR ausdrücklich anweist, dass (('*' | '/') atom)*
gierig angepasst werden muss, wie folgt:
Der Parser "weiß", welche Alternative zu wählen ist, und es wird keine Warnung ausgegeben.
Ich habe die Grammatik mit ANTLR 3.3 wie folgt getestet:
%Vor%Und dann von der Befehlszeile:
%Vor%, die keine Warnung (oder Fehler) erzeugt.