tokenizer.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // tokenizer.h
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _TOKENIZER_H_
  10. #define _TOKENIZER_H_
  11. #include <string>
  12. #include <iostream>
  13. using namespace std;
  14. class Tokenizer
  15. {
  16. public:
  17.     enum TokenType
  18.     {
  19.         TokenName           = 0,
  20.         TokenString         = 1,
  21.         TokenNumber         = 2,
  22.         TokenBegin          = 3,
  23.         TokenEnd            = 4,
  24.         TokenNull           = 5,
  25.         TokenBeginGroup     = 6,
  26.         TokenEndGroup       = 7,
  27.         TokenBeginArray     = 8,
  28.         TokenEndArray       = 9,
  29.         TokenEquals         = 10,
  30.         TokenError          = 11,
  31.         TokenBar            = 12,
  32.     };
  33.     Tokenizer(istream*);
  34.     TokenType nextToken();
  35.     TokenType getTokenType();
  36.     void pushBack();
  37.     double getNumberValue();
  38.     string getNameValue();
  39.     string getStringValue();
  40.     int getLineNumber() const;
  41. private:
  42.     enum State
  43.     {
  44.         StartState          = 0,
  45.         NameState           = 1,
  46.         NumberState         = 2,
  47.         FractionState       = 3,
  48.         ExponentState       = 4,
  49.         ExponentFirstState  = 5,
  50.         DotState            = 6,
  51.         CommentState        = 7,
  52.         StringState         = 8,
  53.         ErrorState          = 9,
  54.         StringEscapeState   = 10,
  55.         UnicodeEscapeState  = 11,
  56.     };
  57.     istream* in;
  58.     int nextChar;
  59.     TokenType tokenType;
  60.     bool haveValidNumber;
  61.     bool haveValidName;
  62.     bool haveValidString;
  63.     unsigned int unicodeValue;
  64.     unsigned int unicodeEscapeDigits;
  65.     bool pushedBack;
  66.     int readChar();
  67.     void syntaxError(const char*);
  68.     double numberValue;
  69.     string textToken;
  70.     int lineNum;
  71. };
  72. #endif // _TOKENIZER_H_