ANTLR Decision kann die Eingabe mithilfe mehrerer Alternativen abgleichen

8

Ich habe diese einfache Grammatik:

%Vor%

Wenn ich es ausführe sagt es:

Die Entscheidung kann Eingaben wie '*' mit mehreren Alternativen 1,2

abgleichen

Die Entscheidung kann Eingaben wie '/' mit mehreren Alternativen 1,2

abgleichen

Ich kann die Zweideutigkeit nicht erkennen. Wie zeigen die roten Pfeile? Jede Hilfe wäre willkommen.

    
John Retallack 31.10.2011, 13:06
quelle

1 Antwort

7

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:

%Vor%

Der Parser "weiß", welche Alternative zu wählen ist, und es wird keine Warnung ausgegeben.

BEARBEITEN

Ich habe die Grammatik mit ANTLR 3.3 wie folgt getestet:

%Vor%

Und dann von der Befehlszeile:

%Vor%

, die keine Warnung (oder Fehler) erzeugt.

    
Bart Kiers 31.10.2011, 13:57
quelle

Tags und Links