00001 #ifndef INC_QueryParser_hpp_ 00002 #define INC_QueryParser_hpp_ 00003 00004 #line 55 "indrilang.g" 00005 00006 #include "indri/QuerySpec.hpp" 00007 #include "indri/DateParse.hpp" 00008 #include "indri/delete_range.hpp" 00009 #include "indri/PriorFactory.hpp" 00010 #include "indri/QueryLexer.hpp" 00011 00012 #line 13 "QueryParser.hpp" 00013 #include <antlr/config.hpp> 00014 /* $ANTLR 2.7.4: "indrilang.g" -> "QueryParser.hpp"$ */ 00015 #include <antlr/TokenStream.hpp> 00016 #include <antlr/TokenBuffer.hpp> 00017 #include "QueryLexerTokenTypes.hpp" 00018 #include <antlr/LLkParser.hpp> 00019 00020 ANTLR_BEGIN_NAMESPACE(indri) 00021 ANTLR_BEGIN_NAMESPACE(lang) 00022 class CUSTOM_API QueryParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public QueryLexerTokenTypes 00023 { 00024 #line 177 "indrilang.g" 00025 00026 private: 00027 // storage for allocated nodes 00028 std::vector<indri::lang::Node*> _nodes; 00029 // makes sure nodes go away when parser goes away 00030 VectorDeleter<indri::lang::Node*> _deleter; 00031 // gives us access to named priors 00032 PriorFactory* _priorFactory; 00033 00034 public: 00035 void init( PriorFactory* factory, QueryLexer* lexer ) { 00036 _priorFactory = factory; 00037 _deleter.setVector( _nodes ); 00038 } 00039 #line 24 "QueryParser.hpp" 00040 public: 00041 void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory ); 00042 protected: 00043 QueryParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf, int k); 00044 public: 00045 QueryParser(ANTLR_USE_NAMESPACE(antlr)TokenBuffer& tokenBuf); 00046 protected: 00047 QueryParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer, int k); 00048 public: 00049 QueryParser(ANTLR_USE_NAMESPACE(antlr)TokenStream& lexer); 00050 QueryParser(const ANTLR_USE_NAMESPACE(antlr)ParserSharedInputState& state); 00051 int getNumTokens() const 00052 { 00053 return QueryParser::NUM_TOKENS; 00054 } 00055 const char* getTokenName( int type ) const 00056 { 00057 if( type > getNumTokens() ) return 0; 00058 return QueryParser::tokenNames[type]; 00059 } 00060 const char* const* getTokenNames() const 00061 { 00062 return QueryParser::tokenNames; 00063 } 00064 public: indri::lang::ScoredExtentNode* query(); 00065 public: indri::lang::ScoredExtentNode* scoredExtentNode(); 00066 public: indri::lang::ScoredExtentNode* weightNode(); 00067 public: indri::lang::ScoredExtentNode* combineNode(); 00068 public: indri::lang::ScoredExtentNode* orNode(); 00069 public: indri::lang::ScoredExtentNode* notNode(); 00070 public: indri::lang::ScoredExtentNode* wandNode(); 00071 public: indri::lang::ScoredExtentNode* wsumNode(); 00072 public: indri::lang::ScoredExtentNode* maxNode(); 00073 public: indri::lang::PriorNode* priorNode(); 00074 public: ScoredExtentNode* scoredRaw(); 00075 public: RawExtentNode* qualifiedTerm(); 00076 public: ExtentOr* context_list(); 00077 public: RawExtentNode* unqualifiedTerm(); 00078 public: indri::lang::ScoredExtentNode* weightedList( 00079 indri::lang::WeightedCombinationNode* wn 00080 ); 00081 public: indri::lang::ExtentRestriction* extentRestriction( 00082 indri::lang::ScoredExtentNode* sn 00083 ); 00084 public: double floating(); 00085 public: indri::lang::ScoredExtentNode* sumList( 00086 indri::lang::WSumNode* wn 00087 ); 00088 public: indri::lang::ScoredExtentNode* unweightedList( 00089 indri::lang::UnweightedCombinationNode* cn 00090 ); 00091 public: indri::lang::ScoredExtentNode* sumNode(); 00092 public: indri::lang::ODNode* odNode(); 00093 public: RawExtentNode* unscoredTerm(); 00094 public: indri::lang::UWNode* uwNode(); 00095 public: indri::lang::FilRejNode* filrejNode(); 00096 public: indri::lang::FilReqNode* filreqNode(); 00097 public: indri::lang::Field* anyField(); 00098 public: ExtentAnd* field_list(); 00099 public: FieldLessNode* dateBefore(); 00100 public: FieldGreaterNode* dateAfter(); 00101 public: FieldBetweenNode* dateBetween(); 00102 public: indri::lang::ExtentOr* synonym_list(); 00103 public: FieldLessNode* lessNode(); 00104 public: FieldGreaterNode* greaterNode(); 00105 public: FieldBetweenNode* betweenNode(); 00106 public: FieldEqualsNode* equalsNode(); 00107 public: IndexTerm* rawText(); 00108 public: Field* field_restriction(); 00109 public: UINT64 date(); 00110 public: UINT64 dashDate(); 00111 public: UINT64 slashDate(); 00112 public: UINT64 spaceDate(); 00113 public: INT64 number(); 00114 public: 00115 ANTLR_USE_NAMESPACE(antlr)RefAST getAST() 00116 { 00117 return returnAST; 00118 } 00119 00120 protected: 00121 ANTLR_USE_NAMESPACE(antlr)RefAST returnAST; 00122 private: 00123 static const char* tokenNames[]; 00124 #ifndef NO_STATIC_CONSTS 00125 static const int NUM_TOKENS = 56; 00126 #else 00127 enum { 00128 NUM_TOKENS = 56 00129 }; 00130 #endif 00131 00132 static const unsigned long _tokenSet_0_data_[]; 00133 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_0; 00134 static const unsigned long _tokenSet_1_data_[]; 00135 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_1; 00136 static const unsigned long _tokenSet_2_data_[]; 00137 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_2; 00138 static const unsigned long _tokenSet_3_data_[]; 00139 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_3; 00140 static const unsigned long _tokenSet_4_data_[]; 00141 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_4; 00142 static const unsigned long _tokenSet_5_data_[]; 00143 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_5; 00144 static const unsigned long _tokenSet_6_data_[]; 00145 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_6; 00146 static const unsigned long _tokenSet_7_data_[]; 00147 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_7; 00148 static const unsigned long _tokenSet_8_data_[]; 00149 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_8; 00150 static const unsigned long _tokenSet_9_data_[]; 00151 static const ANTLR_USE_NAMESPACE(antlr)BitSet _tokenSet_9; 00152 }; 00153 00154 ANTLR_END_NAMESPACE 00155 ANTLR_END_NAMESPACE 00156 #endif /*INC_QueryParser_hpp_*/