Compré recientemente The Definitive ANTLR Reference y estoy emocionado de comenzar a usar ANTLR.
En el primer capítulo, se muestra esta gramática:La referencia ANTLR definitiva - Primer programa no funciona
grammar T;
options {
language = Java;
}
r : 'call' ID ';' {System.out.println("invoke " + $ID.text);} ;
ID : 'a'..'z'+ ;
WS : (' '|'\n'|'\r')+ {$channel=HIDDEN;} ;
Copié esta gramática abajo en un archivo, (extensión .G), generó la lexer y Parser, y ha creado una clase principal de este modo:
import org.antlr.runtime.*;
public final class Test {
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRInputStream(System.in);
TLexer lexer = new TLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
TParser parser = new TParser(tokens);
parser.r();
}
}
no hay errores reales, pero cuando corro la clase principal e introduzca:
call foo;
no pasa nada. "invoke foo" debe salir a la pantalla, pero no ocurre nada. No quiero continuar en el libro sin completar ningún ejercicio. Estoy usando ANTLR 3.4 en Eclipse si es importante. Lo siento si esto parece una pregunta fácil, pero soy nuevo en ANTLR.
Gracias,
Omer
Bienvenido a ANTLR. Tu pregunta es muy válida para un principiante. –
¿Ingresó el carácter de fin de archivo como se indica en el libro? –
No, nunca pensé en eso. En un sistema Windows, ¿sería \ n, \ r o \ r \ n? ¿O solo presionando el botón enter? – leaf