2014-02-18 71 views
2

我想ANTLR認識到「10」(包括單引號)包圍的數量,但它只是給 我的錯誤:缺少「出現在‘10’ANTLR - 用單引號

這裏'是我有什麼爲Test.g4

grammar Test; 

rules : number; 
number : QUOTE NUM QUOTE; 

NUM : [0-9]+; 
QUOTE : '\''; 
WS : [' '\t\r\n]+ -> skip ; 

然後司機文件看起來像:

public class TestStuff{ 
    public static void main(String [] args){ 
    CharStream input = new ANTLRInputStream(" '10' "); 
    TestLexer lexer = new TestLexer(input); 
    CommonTokenStream tokens = new CommonTokenStream (lexer); 
    TestParser parser = new TestParser(tokens); 
    parser.rules(); 
    } 
} 

我已經想盡變化我能想到的和我得到的是:missing QUOTE at '10'

我使用4.1版本,如果它很重要。

+0

你的例子是不完整的,因爲如果你只是添加一個'語法Sample;'子句到你發佈的東西,那麼它工作正常。 –

+0

對不起,這不是整個文件。我只是把相關的部分放進去。我在java中使用這個字符串,看起來像「東西」10「等等等等」如果這很重要。我不認爲我需要在java中逃避單引號。 – user3321348

+0

好吧我已經更新了更多的信息。 – user3321348

回答

2

您的規則:

WS : [' '\t\r\n]+ -> skip ; 

比賽,並跳過,輸入" '"(空格+引號)。

從類中刪除引號:

WS : [ \t\r\n]+ -> skip ; 

,你應該沒問題。