//ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ // FILE : Parser.h // AUTHOR : Catalin Cocos //__________________________________________________________________________________________________ #ifndef __PARSER__ #define __PARSER__ //__________________________________________________________________________________________________ // defines //ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ //#define DWORD unsigned long #define CTP_TEXT 0x00 // fixed value, do not alter #define CTP_SEPARATOR 0x01 #define CTP_NEWLINE 0x02 #define CTP_COMMENT 0x04 #define CTP_LINE_COMMENT 0x08 #define CTP_EOF 0x10 #define CTP_WORD_WRAPPER 0x20 #define CTP_USER_CODE 0x40 #define CTP_MAX_USER_CODE 26 #define CTP_UserCode(X) ( CTP_USER_CODE << X ) //__________________________________________________________________________________________________ // the parser //ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ class CTextParser { unsigned char* m_arFile, * m_pFileEnd, *m_pWord, *m_pCrt, *m_pCountStart; DWORD m_nCode, m_nCountCode; DWORD m_arCode[ 256 ]; unsigned m_uLine; int GetUC(); public: DWORD Position() { return m_pCrt - m_arFile; } int GetCodeCount( DWORD Code); DWORD Code() { return m_nCode; } unsigned Line() { return m_uLine; } CTextParser(); ~CTextParser(); void SetType( char*, int); void ResetDefaults(); BOOL AccessFile( char* ); void ReleaseFile(); DWORD Advance( DWORD *res = NULL ); char* AllocWord(); char* Word(); }; //ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ // DESC. : word obtaining // AUTHOR : Catalin Cocos //__________________________________________________________________________________________________ inline char* CTextParser::Word() { return (char*)m_pWord; } //ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ // DESC. : word copying (allocation uses new) // AUTHOR : Catalin Cocos //__________________________________________________________________________________________________ inline char* CTextParser::AllocWord() { return strcpy (new char[strlen((char*)m_pWord)+1], (char*)m_pWord); } //ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ // DESC. : character read // AUTHOR : Catalin Cocos //__________________________________________________________________________________________________ inline int CTextParser::GetUC() { if(m_pCrt