Niedawno kupiłem The Definitive ANTLR Reference i jestem podekscytowany rozpoczęciem korzystania z ANTLR.
W pierwszym rozdziale, to gramatyka jest pokazany:Ostateczny ANTLR Reference - Pierwszy program nie działa
grammar T;
options {
language = Java;
}
r : 'call' ID ';' {System.out.println("invoke " + $ID.text);} ;
ID : 'a'..'z'+ ;
WS : (' '|'\n'|'\r')+ {$channel=HIDDEN;} ;
skopiowałem tę gramatykę w dół do pliku (rozszerzenie .g) wygenerował Lexer i Parser i stworzył główne klasy tak:
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();
}
}
Nie istnieją żadne realne błędy, ale gdy uruchamiam główną klasę i wpisać:
call foo;
Nic się nie dzieje. "invoke foo" powinno być wyprowadzane na ekran, ale nic się nie dzieje. Nie chcę kontynuować tej książki, nie wykonując żadnego ćwiczenia. Używam ANTLR 3.4 w Eclipse, jeśli to ma znaczenie. Przepraszam, jeśli wydaje się to łatwym pytaniem, ale jestem nowy w ANTLR.
Dzięki,
Omer
Witamy w ANTLR. Twoje pytanie jest bardzo ważne dla początkujących. –
Czy wprowadziłeś znak końca pliku, jak zapisano w książce? –
Nie, nigdy o tym nie myślałem. Czy w systemie Windows to \ n, \ r lub \ r \ n? Lub po prostu naciśnij przycisk Enter? – leaf