ANTLR 4 Lexer规则:如何忽略一部分?

时间:2014-06-24 15:12:24

标签: antlr4

以下是以前ANTLR版本的相关主题:

Java ANTLR how to ignore part of rule? ignore part after subrule

使用词法规则:

R1
: [a-zA-Z0-9]* ';'
;

例如我有这个输入文字:

test;rezrezr
zrezrzerz

它将匹配“test;”这是对的。我只需要“测试”字符串。

我需要照顾';'例如,在自定义侦听器中手动设置字符?或者有没有办法在语法中指定我想避免它(仅使用词法分析器规则)?

更新

test1;rezrezr
zrezrzerz
test2;rezrezr
zrezrzerz

1 个答案:

答案 0 :(得分:0)

如果要避免使用;字符,只需将其从词法分析器规则中删除即可。请注意,我还将*更改为+,以确保R1永远不会是零长度令牌。

R1
  : [a-zA-Z0-9]+
  ;