private ParserRuleContext parseAnnisQuery (String query) {
Lexer lexer = new AqlLexer((CharStream) null);
ParserRuleContext tree = null;
Antlr4DescriptiveErrorListener errorListener = new Antlr4DescriptiveErrorListener(
query);
// Like p. 111
try {
// Tokenize input data
ANTLRInputStream input = new ANTLRInputStream(query);
lexer.setInputStream(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
parser = new AqlParser(tokens);
// Don't throw out erroneous stuff
parser.setErrorHandler(new BailErrorStrategy());
lexer.removeErrorListeners();
lexer.addErrorListener(errorListener);
parser.removeErrorListeners();
parser.addErrorListener(errorListener);
// Get starting rule from parser
Method startRule = AqlParser.class.getMethod("start");
tree = (ParserRuleContext) startRule.invoke(parser,
(Object[]) null);
}
// Some things went wrong ...
catch (Exception e) {
log.error("Could not parse query. "
+ "Please make sure it is well-formed.");
log.error(errorListener.generateFullErrorMsg().toString());
addError(errorListener.generateFullErrorMsg());
}
return tree;
}
AnnisQueryProcessor.java 文件源码
java
阅读 15
收藏 0
点赞 0
评论 0
项目:Koral
作者:
评论列表
文章目录