我希望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版,如果重要的话。
答案 0 :(得分:3)
你的规则:
WS : [' '\t\r\n]+ -> skip ;
匹配并跳过输入" '"
(空格+引号)。
从该类中删除引号:
WS : [ \t\r\n]+ -> skip ;
你应该没事。