TokenType.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #ifndef TOKENTYPE_H
  2. #define TOKENTYPE_H
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. class TokenTypeClass
  7. {
  8. public:
  9. TokenTypeClass(string name, int level) : typeName(name), level(level) {};
  10. TokenTypeClass(string name) : typeName(name), level(-1) {};
  11. virtual ~TokenTypeClass();
  12. string getName() const;
  13. int getLevel() const;
  14. bool operator==(const TokenTypeClass& t) const;
  15. bool operator!=(const TokenTypeClass& t) const;
  16. private:
  17. string typeName;
  18. int level;
  19. };
  20. typedef const TokenTypeClass& TokenType;
  21. std::ostream& operator<<(std::ostream& os, const TokenType& c);
  22. namespace Tokens
  23. {
  24. extern const TokenTypeClass FLOAT;
  25. extern const TokenTypeClass TRUE;
  26. extern const TokenTypeClass FALSE;
  27. extern const TokenTypeClass TNULL;
  28. extern const TokenTypeClass TEXT;
  29. extern const TokenTypeClass LABEL;
  30. extern const TokenTypeClass VAR;
  31. extern const TokenTypeClass GLOBAL;
  32. extern const TokenTypeClass INC;
  33. extern const TokenTypeClass DEC;
  34. extern const TokenTypeClass INVERT;
  35. extern const TokenTypeClass BIT_INVERT;
  36. extern const TokenTypeClass MUL;
  37. extern const TokenTypeClass DIV;
  38. extern const TokenTypeClass MOD;
  39. extern const TokenTypeClass UNARY_ADD;
  40. extern const TokenTypeClass UNARY_SUB;
  41. extern const TokenTypeClass ADD;
  42. extern const TokenTypeClass SUB;
  43. extern const TokenTypeClass LEFT_SHIFT;
  44. extern const TokenTypeClass RIGHT_SHIFT;
  45. extern const TokenTypeClass LESS;
  46. extern const TokenTypeClass LESS_EQUAL;
  47. extern const TokenTypeClass GREATER;
  48. extern const TokenTypeClass GREATER_EQUAL;
  49. extern const TokenTypeClass EQUAL;
  50. extern const TokenTypeClass NOT_EQUAL;
  51. extern const TokenTypeClass BIT_AND;
  52. extern const TokenTypeClass BIT_XOR;
  53. extern const TokenTypeClass BIT_OR;
  54. extern const TokenTypeClass AND;
  55. extern const TokenTypeClass OR;
  56. extern const TokenTypeClass SET;
  57. extern const TokenTypeClass ADD_SET;
  58. extern const TokenTypeClass SUB_SET;
  59. extern const TokenTypeClass MUL_SET;
  60. extern const TokenTypeClass DIV_SET;
  61. extern const TokenTypeClass MOD_SET;
  62. extern const TokenTypeClass LEFT_SHIFT_SET;
  63. extern const TokenTypeClass RIGHT_SHIFT_SET;
  64. extern const TokenTypeClass BIT_AND_SET;
  65. extern const TokenTypeClass BIT_XOR_SET;
  66. extern const TokenTypeClass BIT_OR_SET;
  67. extern const TokenTypeClass COMMA;
  68. extern const TokenTypeClass OPEN_BRACKET;
  69. extern const TokenTypeClass CLOSE_BRACKET;
  70. extern const TokenTypeClass OPEN_SQUARE_BRACKET;
  71. extern const TokenTypeClass CLOSE_SQUARE_BRACKET;
  72. extern const TokenTypeClass OPEN_CURVED_BRACKET;
  73. extern const TokenTypeClass CLOSE_CURVED_BRACKET;
  74. extern const TokenTypeClass SEMICOLON;
  75. extern const TokenTypeClass IF;
  76. extern const TokenTypeClass ELSE_IF;
  77. extern const TokenTypeClass ELSE;
  78. extern const TokenTypeClass FOR;
  79. extern const TokenTypeClass WHILE;
  80. extern const TokenTypeClass FUNCTION;
  81. extern const TokenTypeClass BREAK;
  82. extern const TokenTypeClass CONTINUE;
  83. extern const TokenTypeClass RETURN;
  84. extern const TokenTypeClass TRY;
  85. extern const TokenTypeClass CATCH;
  86. extern const TokenTypeClass END_OF_FILE;
  87. };
  88. #endif