ANTLR4 Beta 3非常简单的语法不起作用

时间:2012-11-29 23:37:07

标签: antlr antlr4

这是一个非常简单的语法:

grammar test;

DIGIT : [0-9] ;
WS : [ \r\n\t]+ -> skip ;
value : DIGIT+ ;

在OSX和JAVA 1.6版下使用antlr v4.0b3

使用以下命令编译语法:

antlr4 test.g4
javac *.java

然后我用grun来测试语法:

grun test value -tokens

结果如下:

grun test value -tokens
12
[eof]
[@0,0:0='1',<1>,1:0]
[@1,1:1='2',<1>,1:1]
[@2,3:2='<EOF>',<-1>,2:0]

我的问题是:为什么我会得到两个代币('1'和'2')而不是一个('12')?

非常感谢能帮助我的人!!

干杯!

1 个答案:

答案 0 :(得分:4)

您已经要求DIGIT一次匹配一个数字,然后传递给解析器规则:value。我想你想要的真的是

value : INT ;
INT : [0-9]+ ;

:)

特伦斯