#include #include #include "tokenizer/Token.h" const char* tGetName(Token token) { switch(token) { case T_INT: return "int"; case T_FLOAT: return "float"; case T_TEXT: return "text"; case T_NULL: return "null"; 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_PRINT: return "print"; 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_FUNCTION: return "function"; case T_RETURN: return "return"; 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_ARRAY: return "array"; case T_POINT: return "."; case T_OPEN_SQUARE_BRACKET: return "["; case T_CLOSE_SQUARE_BRACKET: return "]"; case T_END: return "end"; } return "unknown"; } static bool tEqual(const char* a, const char* b) { return strcmp(a, b) == 0; } Token tFromName(const char* name) { if(tEqual(name, "print")) { return T_PRINT; } else if(tEqual(name, "null")) { return T_NULL; } else if(tEqual(name, "true")) { return T_TRUE; } else if(tEqual(name, "false")) { return T_FALSE; } else if(tEqual(name, "function")) { return T_FUNCTION; } else if(tEqual(name, "return")) { return T_RETURN; } else if(tEqual(name, "if")) { return T_IF; } else if(tEqual(name, "else")) { return T_ELSE; } else if(tEqual(name, "while")) { return T_WHILE; } else if(tEqual(name, "for")) { return T_FOR; } else if(tEqual(name, "break")) { return T_BREAK; } else if(tEqual(name, "continue")) { return T_CONTINUE; } else if(tEqual(name, "array")) { return T_ARRAY; } return T_END; }