Antlr4 ANTLR-由单引号包围的数字
我想让ANTLR识别'10'(包括单引号),但它只给出 告诉我错误:在“10”处缺少“” 以下是我为测试提供的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
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中转义单引号。好的,我已经更新了更多信息。