#ifndef TOKENTYPE_H #define TOKENTYPE_H #include #include using namespace std; class TokenTypeClass { public: TokenTypeClass(string name, int level) : typeName(name), level(level) {}; TokenTypeClass(string name) : typeName(name), level(-1) {}; virtual ~TokenTypeClass(); string getName() const; int getLevel() const; bool operator==(const TokenTypeClass& t) const; bool operator!=(const TokenTypeClass& t) const; private: string typeName; int level; }; typedef const TokenTypeClass& TokenType; std::ostream& operator<<(std::ostream& os, const TokenType& c); namespace Tokens { extern const TokenTypeClass FLOAT; extern const TokenTypeClass TRUE; extern const TokenTypeClass FALSE; extern const TokenTypeClass TNULL; extern const TokenTypeClass TEXT; extern const TokenTypeClass LABEL; extern const TokenTypeClass VAR; extern const TokenTypeClass GLOBAL; extern const TokenTypeClass INC; extern const TokenTypeClass DEC; extern const TokenTypeClass INVERT; extern const TokenTypeClass BIT_INVERT; extern const TokenTypeClass MUL; extern const TokenTypeClass DIV; extern const TokenTypeClass MOD; extern const TokenTypeClass UNARY_ADD; extern const TokenTypeClass UNARY_SUB; extern const TokenTypeClass ADD; extern const TokenTypeClass SUB; extern const TokenTypeClass LEFT_SHIFT; extern const TokenTypeClass RIGHT_SHIFT; extern const TokenTypeClass LESS; extern const TokenTypeClass LESS_EQUAL; extern const TokenTypeClass GREATER; extern const TokenTypeClass GREATER_EQUAL; extern const TokenTypeClass EQUAL; extern const TokenTypeClass NOT_EQUAL; extern const TokenTypeClass BIT_AND; extern const TokenTypeClass BIT_XOR; extern const TokenTypeClass BIT_OR; extern const TokenTypeClass AND; extern const TokenTypeClass OR; extern const TokenTypeClass SET; extern const TokenTypeClass ADD_SET; extern const TokenTypeClass SUB_SET; extern const TokenTypeClass MUL_SET; extern const TokenTypeClass DIV_SET; extern const TokenTypeClass MOD_SET; extern const TokenTypeClass LEFT_SHIFT_SET; extern const TokenTypeClass RIGHT_SHIFT_SET; extern const TokenTypeClass BIT_AND_SET; extern const TokenTypeClass BIT_XOR_SET; extern const TokenTypeClass BIT_OR_SET; extern const TokenTypeClass COMMA; extern const TokenTypeClass OPEN_BRACKET; extern const TokenTypeClass CLOSE_BRACKET; extern const TokenTypeClass OPEN_SQUARE_BRACKET; extern const TokenTypeClass CLOSE_SQUARE_BRACKET; extern const TokenTypeClass OPEN_CURVED_BRACKET; extern const TokenTypeClass CLOSE_CURVED_BRACKET; extern const TokenTypeClass SEMICOLON; extern const TokenTypeClass IF; extern const TokenTypeClass ELSE_IF; extern const TokenTypeClass ELSE; extern const TokenTypeClass FOR; extern const TokenTypeClass WHILE; extern const TokenTypeClass FUNCTION; extern const TokenTypeClass BREAK; extern const TokenTypeClass CONTINUE; extern const TokenTypeClass RETURN; extern const TokenTypeClass TRY; extern const TokenTypeClass CATCH; extern const TokenTypeClass END_OF_FILE; }; #endif