Antlr4 ANTL 4-在输入端没有可行的替代方案<;EOF>;
我在语法上有以下主要规则:Antlr4 ANTL 4-在输入端没有可行的替代方案<;EOF>;,antlr4,Antlr4,我在语法上有以下主要规则: // main rule parse : (statments)+ EOF; 我还有这些片段: COMMENT: '/*' .*? '*/' -> skip; // Toss out commetns LINE_COMMENT: ('--'|'#') ~[\n]* -> skip; // Toss out full line comments NEWLINE: '\r'? '\n' -> skip ;
// main rule
parse : (statments)+ EOF;
我还有这些片段:
COMMENT: '/*' .*? '*/' -> skip; // Toss out commetns
LINE_COMMENT: ('--'|'#') ~[\n]* -> skip; // Toss out full line comments
NEWLINE: '\r'? '\n' -> skip ; // Toss newlines
WS : [ \t]+ -> skip ; // Toss out whitespace
fragment DIGIT : [0-9];
fragment A : [aA];
fragment B : [bB];
fragment C : [cC];
...
fragment Z : [zZ];
我开始解析:
ANTLRInputStream input = new ANTLRInputStream(cqlQuery);
CqlLexer lexer = new CqlLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
CqlParser cqlParser = new CqlParser(tokens);
cqlParser.removeErrorListeners();
cqlParser.addErrorListener(new CqlErrorListener());
ParseTree tree = cqlParser.parse();
ParseTreeWalker walker = new ParseTreeWalker();
CqlListener listener = new CqlListener(metadata);
walker.walk(listener, tree);
为什么有时我会得到:ParseException没有可行的替代输入?你不应该在
行注释中包含\r
:行注释:('--'.'.'.'.'.''.''.'->跳过代码>如果这不是问题所在,请发布一个,以便其他人可以复制它。正如巴特已经提到的:发布一个语法和一个产生您所经历的错误的输入。