package org.apache.lucene.queryparser.flexible.aqp; import org.antlr.runtime.TokenStream; import org.apache.lucene.queryparser.flexible.core.QueryNodeParseException; import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; /** * All ANTLR parsers should subclass {@link AqpSyntaxParser} and * provide two methods: * * {@link AqpSyntaxParser}{@link #getTokenStream(CharSequence)} * {@link AqpSyntaxParser}{@link #parseTokenStream(TokenStream, CharSequence, CharSequence)} * * Optionally, the new class can also override * * {@link AqpSyntaxParser}{@link #initializeGrammar(String)} * * The default implementation is using reflection and is able * to instantiate any grammar provided that the top parse rule * is called <b>mainQ</b> and that the grammar is producing * AST tree. * */ public abstract class AqpSyntaxParserAbstract implements AqpSyntaxParser { /** * Parse the query and return the {@link QueryNode}. ANTLR will * do the parsing and we return AST. */ public QueryNode parse(CharSequence query, CharSequence field) throws QueryNodeParseException { TokenStream tokens = getTokenStream(query); return parseTokenStream(tokens, query, field); } }