/// <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; } }