ANTRL 4 - 在输入<eof> </eof>时没有可行的替代方案

时间:2015-03-09 09:43:35

标签: antlr4

我在语法中有以下主要规则:

// 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没有可行的替代输入?

0 个答案:

没有答案