这是一个非常简单的语法:
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')?
非常感谢能帮助我的人!!
干杯!
盖
答案 0 :(得分:4)
您已经要求DIGIT一次匹配一个数字,然后传递给解析器规则:value。我想你想要的真的是
value : INT ;
INT : [0-9]+ ;
:)
特伦斯