Antlr Lexer输出

时间:2014-03-20 10:34:56

标签: output antlr lexer

我目前正在使用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|~'\'') '\'';

感谢任何帮助,即使它只是想知道该怎么做

1 个答案:

答案 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());
}