123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #include <stdbool.h>
- #include <string.h>
- #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;
- }
|