00001 /*========================================================================== 00002 * Copyright (c) 2002 University of Massachusetts. 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 00013 #ifndef _INQARABICPARSER_HPP 00014 #define _INQARABICPARSER_HPP 00015 #define NESTING_LIMIT 20 00016 #include "Parser.hpp" 00017 #include "TextHandler.hpp" 00018 namespace lemur 00019 { 00020 namespace parse 00021 { 00022 00023 class InqArabicParser : public lemur::api::Parser { 00024 00025 public: 00026 static const string identifier; 00027 00028 InqArabicParser(); 00029 00031 void parseFile (const string &filename); 00032 00034 void parseBuffer (char * buf, int len); 00035 00038 long fileTell() const; 00040 void doParse(); 00042 void finishing_nesting_qnote(int top); 00044 void finishing_prox_qnote(int top); 00046 void parseNestingOp(const char *op); 00048 void parseProxOp(const char *op, const char *size); 00050 void parsePassageOp(const char *op, const char *size); 00052 void parseSynOp(const char *op); 00054 void parsePropOp(const char *op); 00056 void parseTermOp(const char *op); 00058 void parseQryNode(int tok); 00060 void parseProxNode(int tok); 00061 00062 private: 00063 00065 int state; 00066 }; 00067 } 00068 } 00069 00070 #endif