Files
smallprojects/meta_gen.c
Krzosa Karol 9792517c41 Init repo
2026-05-10 13:24:39 +02:00

109 lines
2.1 KiB
C

typedef enum {
TOK_EOF,
TOK_ERROR,
TOK_IDENT,
TOK_KEYWORD,
TOK_INT,
TOK_FLOAT,
TOK_CHAR,
TOK_STRING,
TOK_LPAREN,
TOK_RPAREN,
TOK_LBRACKET,
TOK_RBRACKET,
TOK_LBRACE,
TOK_RBRACE,
TOK_COMMA,
TOK_DOT,
TOK_ARROW,
TOK_ELLIPSIS,
TOK_COLON,
TOK_SEMICOLON,
TOK_QUESTION,
TOK_HASH,
TOK_HASHHASH,
TOK_PLUS,
TOK_MINUS,
TOK_STAR,
TOK_SLASH,
TOK_PERCENT,
TOK_INC,
TOK_DEC,
TOK_ASSIGN,
TOK_PLUS_ASSIGN,
TOK_MINUS_ASSIGN,
TOK_MUL_ASSIGN,
TOK_DIV_ASSIGN,
TOK_MOD_ASSIGN,
TOK_LSHIFT_ASSIGN,
TOK_RSHIFT_ASSIGN,
TOK_AND_ASSIGN,
TOK_XOR_ASSIGN,
TOK_OR_ASSIGN,
TOK_EQ,
TOK_NEQ,
TOK_LT,
TOK_LEQ,
TOK_GT,
TOK_GEQ,
TOK_NOT,
TOK_BITNOT,
TOK_BITAND,
TOK_BITOR,
TOK_BITXOR,
TOK_AND,
TOK_OR,
TOK_LSHIFT,
TOK_RSHIFT,
} Token_Kind;
char *token_to_op[] = {
[TOK_LPAREN] = "(",
[TOK_RPAREN] = ")",
[TOK_LBRACKET] = "[",
[TOK_RBRACKET] = "]",
[TOK_LBRACE] = "{",
[TOK_RBRACE] = "}",
[TOK_COMMA] = ",",
[TOK_DOT] = ".",
[TOK_ARROW] = "->",
[TOK_ELLIPSIS] = "...",
[TOK_COLON] = ":",
[TOK_SEMICOLON] = ";",
[TOK_QUESTION] = "?",
[TOK_HASH] = "#",
[TOK_HASHHASH] = "##",
[TOK_PLUS] = "+",
[TOK_MINUS] = "-",
[TOK_STAR] = "*",
[TOK_SLASH] = "/",
[TOK_PERCENT] = "%",
[TOK_INC] = "++",
[TOK_DEC] = "--",
[TOK_ASSIGN] = "=",
[TOK_PLUS_ASSIGN] = "+=",
[TOK_MINUS_ASSIGN] = "-=",
[TOK_MUL_ASSIGN] = "*=",
[TOK_DIV_ASSIGN] = "/=",
[TOK_MOD_ASSIGN] = "%=",
[TOK_LSHIFT_ASSIGN] = "<<=",
[TOK_RSHIFT_ASSIGN] = ">>=",
[TOK_AND_ASSIGN] = "&=",
[TOK_XOR_ASSIGN] = "^=",
[TOK_OR_ASSIGN] = "|=",
[TOK_EQ] = "==",
[TOK_NEQ] = "!=",
[TOK_LT] = "<",
[TOK_LEQ] = "<=",
[TOK_GT] = ">",
[TOK_GEQ] = ">=",
[TOK_NOT] = "!",
[TOK_BITNOT] = "~",
[TOK_BITAND] = "&",
[TOK_BITOR] = "|",
[TOK_BITXOR] = "^",
[TOK_AND] = "&&",
[TOK_OR] = "||",
[TOK_LSHIFT] = "<<",
[TOK_RSHIFT] = ">>",
};