我目前正在使用antlr在eclipse中编写扫描程序,令牌正在扫描,但我想显示CHARLITERAL:在每个之前
我得到的当前输出是
2 'a'
2 'b'
2 'c'
3 'R'
3 'i'
3 'n'
但是我希望输出
CHARLITERAL: 'a'
CHARLITERAL: 'b'
我认为错误的代码是:
CHAR_LITERAL options { paraphrase = "CHARLITERAL"; }: '\''(ESC|~'\'') '\'';
感谢任何帮助,即使它只是想知道该怎么做
答案 0 :(得分:2)
ANTLR本身并不输出令牌列表,也没有任何选项paraphrase
(至少在ANTLR 3或ANTLR 4中没有)。如果您想在每个之前输出CHARLITERAL:
,那么您需要在每个之前显式输出CHARLITERAL:
。
CharStream input = ...;
TokenSource tokenSource = new MyLexer(input);
while (true) {
Token token = tokenSource.nextToken();
if (token.getType() == EOF) {
break;
}
System.out.print("CHARLITERAL: ");
System.out.println(token.getText());
}