下面是一个非常简单的语法:
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')?
非常感谢那些能帮助我的人!
干杯!
盖伊
发布于 2012-11-30 09:06:07
您要求DIGIT一次匹配一个数字,然后将其传递给解析器规则: value。我觉得你真正想要的是
value : INT ;
INT : [0-9]+ ;:)
特伦斯
https://stackoverflow.com/questions/13636789
复制相似问题