2012-08-30 17 views
6

Chcę stworzyć bardzo prostą gramatykę z wcięciem spacji. Każda linia składa się z 1 lub więcej słów ale wcięcia jak pytona (4 przestrzenie lub karta jest jedno wcięcie) i nie ma w pobliżu do wcięcia, na przykład:ANTLR: Wcięcie przestrzeni?

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

Zamiast odczytać każdą linię obliczyć wcięcia i zbudować drzewo ręcznie, czy można to wszystko zrobić w gramatyce ANTLR? Mój język docelowy to Java.

+6

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

Odpowiedz

1

To jest możliwe. Wszystko, co musisz zrobić, to zdefiniować regułę i pozwolić jej ominąć.

Proszę bardzo:

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

Albo jeśli trzeba rozpoznać \ n lub \ r

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

Dodaj to do swojej Gramar oraz wszystkich pomieszczeń i kartami będą ignorowane.