123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #ifndef _token_h_
- #define _token_h_
- //////////////////////////////////////////////////////////////////////////////
- //
- // Translate escape sequences \?
- //
- //////////////////////////////////////////////////////////////////////////////
- int TranslateCharacter(const char*& pcc);
- int ReadHexNumber(const char*& pcc, int max = -1);
- //////////////////////////////////////////////////////////////////////////////
- //
- // Token
- //
- //////////////////////////////////////////////////////////////////////////////
- class TextTokenImpl {
- public:
- const int Null ;
- const int String;
- const int Number;
- const int Symbol;
- private:
- TMap<ZString, int> m_symbolMap;
- TMap<int, ZString> m_tokenMap;
- int m_idFree;
- int m_type;
- ZString m_string;
- float m_numberValue;
- int m_line;
- ZString m_strError;
- PCC m_pcc;
- PCC m_pccEnd;
- PCC m_pccLine;
- PCC m_pccStart;
- PCC m_pccExpressionStart;
- bool ReadNumber(bool bExponent = false);
- bool ReadExponent();
- bool ReadString(char);
- bool ReadSymbol();
- bool SkipWhite();
- int GetLineNumber();
- int GetLineCharNumber();
- int GetCharNumber();
- protected:
- TextTokenImpl(PCC pcc, int length);
- int AddSymbol(const ZString& str);
- int AddToken(const ZString& str);
- virtual bool IsSymbolChar(char ch);
- virtual int ParseToken(PCC& pcc);
- public:
- ~TextTokenImpl();
- //
- // IToken members
- //
- void SetError(const ZString& szerror);
- void SetErrorUnexpected();
- bool Error();
- void Next();
- bool MoreTokens();
- bool Is(int id, bool bError);
- bool IsSymbol(ZString& str, bool bError);
- bool IsString(ZString& str, bool bError);
- bool IsNumber(float& number, bool bError);
- };
- //////////////////////////////////////////////////////////////////////////////
- //
- // CommandLineToken
- //
- //////////////////////////////////////////////////////////////////////////////
- class CommandLineToken {
- private:
- PCC m_pcc;
- PCC m_pccEnd;
- void SkipWhite();
- bool ReadExponent(float& number);
- bool ReadNumber(float& number, bool bExponent = false);
- public:
- CommandLineToken(PCC& pcc, int length);
- bool MoreTokens();
- bool IsMinus(ZString& str);
- bool IsString(ZString& str);
- bool IsNumber(float& number);
- void Skip();
- };
- #endif
|