2012-08-30 18 views
6

Ich möchte eine sehr einfache Grammatik mit Leerzeicheneinrückung erstellen. Jede Zeile besteht aus 1 oder mehreren Worten aber Einrückung wie Python (4 Leerzeichen oder eine Lasche ist ein Gedankenstrich) und es gibt kein Schließen für die Einrückung, zum Beispiel:ANTLR: Leerzeichen Einrückung?

if something cool occurs 
    do this 
else 
    otherwise do this 
    loop around something 
     each time doing this 
     and do that 
say good byte 

Anstatt jede Zeile gelesen, die Berechnung der Einbuchtung und einen Baum manuell erstellen ist es möglich, all das in der ANTLR-Grammatik zu machen? Meine Zielsprache ist Java.

+6

Siehe: http://stackoverflow.com/questions/8642154/antlr-what-is-simpliest-way-to-realize-python-like-indent-depending-grammar –

Antwort

1

Dies ist möglich. Sie definieren lediglich eine Regel und lassen sie überspringen.

Hier gehen Sie:

Ignore : (' ' | '\t' | '\n' | '\r')+ {skip();}; 

Oder wenn Sie erkennen müssen \ n oder \ r

Ignore : (' ' | '\t')+ {skip();}; 

Fügen Sie diese auf Ihre gramar und alle Leerzeichen und Tabulatoren werden ignoriert.