私はAntlrの初心者です。練習用に少し文法を書きますが、APICommonTokenStreamに混乱します
lexer grammar Expr;
options {
language = Java;
}
EXPRS:EXPRT {System.out.println($EXPRT.text);};
fragment
EXPRT : 'xxx' ID {System.out.println($ID.text);} ' zzz';
fragment
ID : ('a'..'z' |'A'..'Z' |'_' )('a'..'z' |'A'..'Z'|'_')*;
テストコードは次のようなものです。
ANTLRStringStream input = new ANTLRStringStream(msg);
Expr expr = new Expr(input);
CommonTokenStream cs = new CommonTokenStream(expr);
System.out.println(cs.size());
入力が何であれ、CommonTokenStreamからのトークンはありません。ただし、exprを直接使用すると出力されます。誰もが理由を知っていますか?antlrのバージョンは3.5です