Antlr4 ANTLR-由单引号包围的数字

Antlr4 ANTLR-由单引号包围的数字,antlr4,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(S

我想让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();
    }
}
我已经尝试了我能想到的每一个变体,我得到的只是:
在'10'处缺少引号

如果有必要,我使用的是4.1版。

您的规则:

WS : [' '\t\r\n]+ -> skip ;
匹配并跳过输入
“'”
(空格+引号)

从该类中删除引号:

WS : [ \t\r\n]+ -> skip ;
你应该没事。

你的规则:

WS : [' '\t\r\n]+ -> skip ;
匹配并跳过输入
“'”
(空格+引号)

从该类中删除引号:

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

你应该没问题。

你的例子不完整,因为如果你只添加一个
语法样本子句到您发布的内容,然后它就可以正常工作了。对不起,这不是整个文件。我只是加入了相关的部分。我在java中的一个字符串上使用了它,如果这很重要的话,它看起来像是“stuff'10'废话废话”。我不认为我需要在java中转义单引号。好的,我已经更新了更多信息。您的示例不完整,因为如果您只添加
语法示例子句到您发布的内容,然后它就可以正常工作了。对不起,这不是整个文件。我只是加入了相关的部分。我在java中的一个字符串上使用了它,如果这很重要的话,它看起来像是“stuff'10'废话废话”。我不认为我需要在java中转义单引号。好的,我已经更新了更多信息。