#include #include #include "tokenizer/Token.h" const char* tGetName(Token token) { switch(token) { case T_VOID: return "void"; case T_INT32: return "int"; case T_INT64: return "long"; case T_BOOL: return "bool"; case T_FLOAT: return "float"; case T_CONST_INT32: return "const int"; case T_CONST_INT64: return "const long"; case T_CONST_FLOAT: return "const float"; case T_TEXT: return "text"; case T_NULLPTR: return "nullptr"; case T_TRUE: return "true"; case T_FALSE: return "false"; case T_ADD: return "+"; case T_SUB: return "-"; case T_MUL: return "*"; case T_DIV: return "/"; case T_MOD: return "%"; case T_LESS: return "<"; case T_LESS_EQUAL: return "<="; case T_GREATER: return ">"; case T_GREATER_EQUAL: return ">="; case T_EQUAL: return "=="; case T_NOT_EQUAL: return "!="; case T_NOT: return "!"; case T_AND: return "&&"; case T_OR: return "||"; case T_BIT_NOT: return "~"; case T_BIT_AND: return "&"; case T_BIT_OR: return "|"; case T_BIT_XOR: return "^"; case T_LEFT_SHIFT: return "<<"; case T_RIGHT_SHIFT: return ">>"; case T_SET: return "="; case T_ADD_SET: return "+="; case T_SUB_SET: return "-="; case T_MUL_SET: return "*="; case T_DIV_SET: return "/="; case T_MOD_SET: return "%="; case T_BIT_AND_SET: return "&="; case T_BIT_OR_SET: return "|="; case T_BIT_XOR_SET: return "^="; case T_LEFT_SHIFT_SET: return "<<="; case T_RIGHT_SHIFT_SET: return ">>="; case T_INCREMENT: return "++"; case T_DECREMENT: return "--"; case T_LITERAL: return "literal"; case T_IF: return "if"; case T_ELSE: return "else"; case T_WHILE: return "while"; case T_FOR: return "for"; case T_BREAK: return "break"; case T_CONTINUE: return "continue"; case T_RETURN: return "return"; case T_STRUCT: return "struct"; case T_COMMA: return ","; case T_SEMICOLON: return ";"; case T_OPEN_BRACKET: return "("; case T_CLOSE_BRACKET: return ")"; case T_OPEN_CURVED_BRACKET: return "{"; case T_CLOSE_CURVED_BRACKET: return "}"; case T_POINT: return "."; case T_ARROW: return "->"; case T_OPEN_SQUARE_BRACKET: return "["; case T_CLOSE_SQUARE_BRACKET: return "]"; case T_NEW: return "new"; case T_DELETE: return "delete"; case T_LENGTH: return "length"; case T_CONST: return "const"; case T_END: return "end"; } return "unknown"; } #define MATCH_TOKEN(tokenName, token) \ if(strcmp(name, tokenName) == 0) { \ return token; \ } Token tFromName(const char* name) { MATCH_TOKEN("nullptr", T_NULLPTR); MATCH_TOKEN("true", T_TRUE); MATCH_TOKEN("false", T_FALSE); MATCH_TOKEN("return", T_RETURN); MATCH_TOKEN("if", T_IF); MATCH_TOKEN("else", T_ELSE); MATCH_TOKEN("while", T_WHILE); MATCH_TOKEN("for", T_FOR); MATCH_TOKEN("break", T_BREAK); MATCH_TOKEN("continue", T_CONTINUE); MATCH_TOKEN("int", T_INT32); MATCH_TOKEN("long", T_INT64); MATCH_TOKEN("void", T_VOID); MATCH_TOKEN("bool", T_BOOL); MATCH_TOKEN("float", T_FLOAT); MATCH_TOKEN("struct", T_STRUCT); MATCH_TOKEN("new", T_NEW); MATCH_TOKEN("delete", T_DELETE); MATCH_TOKEN("length", T_LENGTH); MATCH_TOKEN("const", T_CONST); return T_END; }