#pragma once #include #include #include #include #include #include #include typedef enum TokenType { TOK_NONE, TOK_INVALID, TOK_SEMICOLON, TOK_EQUAL, TOK_BREAK, TOK_GOTO, TOK_DO, TOK_END, TOK_WHILE, TOK_REPEAT, TOK_UNTIL, TOK_IF, TOK_THEN, TOK_ELSEIF, TOK_ELSE, TOK_FOR, TOK_COMMA, TOK_IN, TOK_FUNCTION, TOK_LOCAL, TOK_DOUBLE_COLON, TOK_DOT, TOK_COLON, TOK_SQUAREN_L, TOK_SQUAREN_R, TOK_NIL, TOK_TRUE, TOK_FALSE, TOK_ELLIPSIS, TOK_PAREN_L, TOK_PAREN_R, TOK_SQUIGGLY_L, TOK_SQUIGGLY_R, TOK_PLUS, TOK_MINUS, TOK_MUL, TOK_DIV, TOK_IDIV, TOK_CARET, TOK_PERCENT, TOK_AMPERSAND, TOK_TILDE, TOK_BAR, TOK_DOUBLE_RIGHT, TOK_DOUBLE_LEFT, TOK_DOUBLE_DOT, TOK_LEFT, TOK_RIGHT, TOK_LEFT_EQUAL, TOK_RIGHT_EQUAL, TOK_DOUBLE_EQUAL, TOK_NOT_EQUAL, TOK_AND, TOK_OR, TOK_NOT, TOK_SHARP, TOK_NAME, TOK_RETURN, TOK_NUMBER, TOK_STRING, TOK_EOF, } TokenType; typedef struct Token { TokenType type; int row; char *text; } Token; #define i_header #define T vec_Token, Token #include"stc/vec.h" #undef i_header vec_Token ltokenize(const char *buf, size_t len);