tree antlr grammar

tree - Token inesperado de error de sintaxis de ANTLR:+



grammar (1)

Al analizar la fuente:

variable a, b, c : int;

estás tratando de construir un AST que se parece a:

variable variable variable / | / a b c / | / int int int

Pero como ''variable'' y TYPE son siempre el mismo token, no veo la necesidad de crear todos esos nodos duplicados. Por qué no solo hacer:

declaration : ''variable'' IDENTIFIER ( '','' IDENTIFIER)* '':'' TYPE '';'' -> ^(''variable'' TYPE IDENTIFIER+) ;

que creará un AST como:

variable / | | / int a b c

?

Hola, tengo un pequeño problema en mi gramática de árbol ANTLR. Estoy usando ANTLRWorks 1.4. En la gramática del analizador, tengo la regla así:

declaration : ''variable'' IDENTIFIER ( '','' IDENTIFIER)* '':'' TYPE '';'' -> ^(''variable'' IDENTIFIER TYPE)+

Así que quería un árbol por cada IDENTIFICADOR.

Y en la gramática de árbol dejé solo reglas de reescritura:

declaration : ^(''variable'' IDENTIFIER TYPE)+

Pero cuando reviso la gramática recibí un error de sintaxis inesperado token +. Y es este signo + al final de la regla de declaración en la gramática del árbol. Entonces, ¿qué estoy haciendo mal?

La gramática del analizador funciona bien y construye el árbol AST como se esperaba. Genere lexer y analizador para C # y lo pruebo para obtener alguna entrada.