2012-08-30 24 views
6

Quiero crear una gramática muy simple con indentación de espacio. Cada línea se compone de 1 o más palabras, sino indentación como pitón (4 espacios o una pestaña es uno guión) y no hay cierre para el sangrado, por ejemplo:ANTLR: indentación de espacio?

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

En lugar de leer cada línea, calcular la indentación y construir un árbol manualmente ¿es posible hacer todo eso en la gramática ANTLR? Mi idioma de destino es Java.

+6

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

Respuesta

1

Esto es posible. Todo lo que haces es definir una regla y dejar que se salte.

Aquí van:

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

O si es necesario reconocer \ no \ r

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

Agregar a su GRAMAR y todos los espacios y las fichas serán ignorados.