/// <summary>
/// Parses a query string, returning a <see cref="IQueryNode"/>.
/// </summary>
/// <param name="query">the query string to be parsed.</param>
/// <param name="field"></param>
/// <returns></returns>
/// <exception cref="ParseException">if the parsing fails</exception>
public IQueryNode Parse(string query, string field)
{
ReInit(new FastCharStream(new StringReader(query)));
try
{
// TopLevelQuery is a Query followed by the end-of-input (EOF)
IQueryNode querynode = TopLevelQuery(field);
return querynode;
}
catch (ParseException tme)
{
tme.SetQuery(query);
throw tme;
}
catch (Exception tme)
{
IMessage message = new MessageImpl(QueryParserMessages.INVALID_SYNTAX_CANNOT_PARSE, query, tme.Message);
QueryNodeParseException e = new QueryNodeParseException(tme);
e.SetQuery(query);
e.SetNonLocalizedMessage(message);
throw e;
}
}