ANTLR - 用单引号括起来的数字

时间:2014-02-18 01:13:27

标签: antlr4

我希望ANTLR识别'10'(包括单引号),但它只是给出了 我错了:在'10'缺少'''

以下是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版,如果重要的话。

1 个答案:

答案 0 :(得分:3)

你的规则:

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

匹配并跳过输入" '"(空格+引号)。

从该类中删除引号:

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

你应该没事。