2012-11-29 57 views
3

這是一個非常簡單的語法:ANTLR4 Beta 3的很簡單的語法不工作

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')?

非常感謝那些能夠幫助我的人!

乾杯!

蓋伊

回答

4

你問一位數字的時間,然後將其傳遞給解析器規則匹配單個數字:值。我想你想要什麼是真正

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

:)

特倫斯

+0

泰倫斯你好。非常感謝!我剛剛找到了同樣的答案...我錯過了最後2個小時的愚蠢錯誤! – Guy