最近、The Definitive ANTLR Referenceを購入しました。ANTLR を使い始めることに興奮しています。
最初の章では、この文法が示されています。
grammar T;
options {
language = Java;
}
r : 'call' ID ';' {System.out.println("invoke " + $ID.text);} ;
ID : 'a'..'z'+ ;
WS : (' '|'\n'|'\r')+ {$channel=HIDDEN;} ;
この文法をファイル (.g 拡張子) にコピーし、レクサーとパーサーを生成し、次のようなメイン クラスを作成しました。
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();
}
}
実際のエラーはありませんが、メイン クラスを実行して次のように入力すると、次のようになります。
call foo;
何も起こりません。画面に「invoke foo」と出力されるはずですが、何も起こりません。演習を 1 つも完了せずに本を読み進めたくありません。問題があれば、EclipseでANTLR 3.4を使用しています。これが簡単な質問のように思える場合は申し訳ありませんが、ANTLR は初めてです。
ありがとう、
オマー