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 DDLSCANNERBASE_H 00020 #define DDLSCANNERBASE_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 using namespace std; 00034 00035 #include <fstream> 00036 #include <stdio.h> 00037 #include <string.h> 00038 00039 #ifndef DEBUG 00040 #define DEBUG 0 00041 #endif 00042 00043 00049 class DDLScanner // : public DDLFlexLexer 00050 { 00051 protected: 00052 00053 string *_tBuf; 00054 int _isText; 00055 int _i, _j, _len; 00056 00057 protected: 00058 ofstream log; 00059 bool _verbose; 00060 void alt_yymore(void); 00061 void OpenLog(const string& logName, bool verboseLevel); 00062 00063 public: 00064 int NDBlineNo; 00065 int isSave; 00066 DDLScanner(istream *yyin); 00067 DDLScanner(); 00068 void Clear(); 00069 void Reset(); 00070 int ProcessNone(); 00071 void ProcessWhiteSpace(); 00072 int ProcessData(); 00073 int ProcessItemSaveBegin(); 00074 int ProcessCategorySaveBegin(); 00075 int ProcessSaveEndScanner(); 00076 int ProcessLoopScanner(); 00077 void ProcessStop(); 00078 int ProcessDot(); 00079 int ProcessQuestion(); 00080 void ProcessComment(); 00081 int ProcessItemNameScanner(); 00082 int ProcessUnquotedString(); 00083 int ProcessSQuotedString(); 00084 int ProcessDQuotedString(); 00085 int ProcessEof(); 00086 virtual int yylex(); 00087 virtual ~DDLScanner() {Reset();}; 00088 }; 00089 00090 #endif 00091