#ifndef TOKEN_H #define TOKEN_H #include #include "Types.h" using namespace std; enum class TokenKind { PLUS, MINUS, STAR, SLASH, PERCENT, EQUAL, NOT_EQUAL, LESS, LESS_EQUAL, GREATER, GREATER_EQUAL, LEFT_PAREN, RIGHT_PAREN, COMMA, COLON, SEMICOLON, QUESTION, QUESTION_QUESTION, LEFT_ARROW, RIGHT_ARROW, FUNCTION, RETURN, REPEAT, BOOL, INTEGER_DEC, INTEGER_HEX, INTEGER_BIN, REAL, IDENTIFIER, TYPE, M_EXTERN, NEW_LINE, END, INVALID }; class Token { private: TokenKind kind; string lexme; int line; int column; public: static vector tokensEquality; static vector tokensComparison; static vector tokensTerm; static vector tokensFactor; static vector tokensBinary; static vector tokensLiteral; Token(TokenKind kind, string lexme, int line, int column); TokenKind getKind(); string getLexme(); int getLine(); int getColumn(); bool isValid(); bool isOfKind(vector kinds); string toString(); }; #endif