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
行注释:('--'.'.'.'.'.''.''.'->跳过如果这不是问题所在,请发布一个,以便其他人可以复制它。正如巴特已经提到的:发布一个语法和一个产生您所经历的错误的输入。