00001 //$$FILE$$ 00002 //$$VERSION$$ 00003 //$$DATE$$ 00004 //$$LICENSE$$ 00005 00006 00014 /* 00015 PURPOSE: DDL 2.1 compliant CIF file lexer ... 00016 */ 00017 00018 00019 #ifndef DICSCANNERBASE_H 00020 #define DICSCANNERBASE_H 00021 00022 00023 /* 00024 #if !defined(DDL_FLEX_LEXER_INCLUDED) 00025 #undef yyFlexLexer 00026 #define yyFlexLexer DDLFlexLexer 00027 #include "FlexLexer.h" 00028 #endif 00029 */ 00030 00031 #include <string> 00032 00033 00034 #include <fstream> 00035 #include <stdio.h> 00036 #include <string.h> 00037 00038 #ifndef DEBUG 00039 #define DEBUG 0 00040 #endif 00041 00042 00048 class DICScanner // : public DDLFlexLexer 00049 { 00050 protected: 00051 00052 std::string *_tBuf; 00053 int _isText; 00054 int _i, _j, _len; 00055 00056 protected: 00057 std::ofstream log; 00058 bool _verbose; 00059 void alt_yymore(void); 00060 void OpenLog(const std::string& logName, bool verboseLevel); 00061 00062 public: 00063 int NDBlineNo; 00064 int isSave; 00065 DICScanner(std::istream *yyin); 00066 DICScanner(); 00067 void Clear(); 00068 void Reset(); 00069 int ProcessNone(); 00070 void ProcessWhiteSpace(); 00071 int ProcessData(); 00072 int ProcessItemSaveBegin(); 00073 int ProcessCategorySaveBegin(); 00074 int ProcessSaveEndScanner(); 00075 int ProcessLoopScanner(); 00076 void ProcessStop(); 00077 int ProcessDot(); 00078 int ProcessQuestion(); 00079 void ProcessComment(); 00080 int ProcessItemNameScanner(); 00081 int ProcessUnquotedString(); 00082 int ProcessSQuotedString(); 00083 int ProcessDQuotedString(); 00084 int ProcessEof(); 00085 virtual int yylex(); 00086 virtual ~DICScanner() {Reset();}; 00087 }; 00088 00089 #endif 00090