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.