00001 /*========================================================================== 00002 * Copyright (c) 2001 Carnegie Mellon University. All Rights Reserved. 00003 * 00004 * Use of the Lemur Toolkit for Language Modeling and Information Retrieval 00005 * is subject to the terms of the software license set forth in the LICENSE 00006 * file included with this software, and also available at 00007 * http://www.lemurproject.org/license.html 00008 * 00009 *========================================================================== 00010 */ 00011 00012 #ifndef _INQUERYOPPARSER_HPP 00013 #define _INQUERYOPPARSER_HPP 00014 #define NESTING_LIMIT 20 00015 #include "Parser.hpp" 00016 #include "TextHandler.hpp" 00017 namespace lemur 00018 { 00019 namespace parse 00020 { 00021 00022 // Source code in InQueryOpParser.lex 00023 00024 class InQueryOpParser : public lemur::api::Parser { 00025 00026 public: 00027 static const string identifier; 00028 00029 InQueryOpParser(); 00030 00032 void parseFile (const string &filename); 00033 00035 void parseBuffer (char * buf, int len); 00036 00039 long fileTell() const; 00041 void doParse(); 00043 void finishing_nesting_qnote(int top); 00045 void finishing_prox_qnote(int top); 00047 void parseNestingOp(const char *op); 00049 void parseProxOp(const char *op, const char *size); 00051 void parsePassageOp(const char *op, const char *size); 00053 void parseSynOp(const char *op); 00055 void parsePropOp(const char *op); 00057 void parseTermOp(const char *op); 00059 void parseQryNode(int tok); 00061 void parseProxNode(int tok); 00062 00063 private: 00064 00066 int state; 00067 }; 00068 } 00069 } 00070 00071 #endif