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