#ifndef _QueryParser_h_ #define _QueryParser_h_ // // QueryParser.h // // QueryParser: (abstract) root of the family of classes that create // Query trees by analyzing query strings. // The main public interface consists on Parse(), // which does the job. // The subclasses must provide a lexer. // This class implements also the common behaviour needed to // parse single words and phrases. // // Part of the ht://Dig package // Copyright (c) 1995-2004 The ht://Dig Group // For copyright details, see the file COPYING in your distribution // or the GNU Library General Public License (LGPL) version 2 or later // // // $Id: QueryParser.h,v 1.4 2004/05/28 13:15:24 lha Exp $ // #include "QueryLexer.h" class Query; class FuzzyExpander; // abstract class QueryParser { public: virtual ~QueryParser() {} // do it Query *Parse(const String &query_string); // contains a diagnostic if Parse() failed const String &Error() const { return error; } // set a fuzzy word expansion policy static void SetFuzzyExpander(FuzzyExpander *x) { expander = x; } protected: QueryParser() {} // apply a syntax -- tbd by derived classes virtual Query *ParseExpression() = 0; // access to the lexer -- provided by children virtual QueryLexer &Token() = 0; // parse one (fuzzy) word Query *ParseWord(); // parse an exact word Query *ParseExactWord(); // parse a phrase Query *ParsePhrase(); // set the error string on syntax error void Expected(const String &what); // the current fuzzy expansion policy if some static FuzzyExpander *expander; private: // syntax error if some String error; }; #endif