#ifndef FLUP_TOKENIZER_H #define FLUP_TOKENIZER_H #include "../submodules/utilitiec/src/StringView/StringView.h" #include enum TokenType { TOKENTYPE_NONE, TOKENTYPE_INTEGER, TOKENTYPE_DOUBLE, TOKENTYPE_IDENTIFIER, TOKENTYPE_LEFT_BRACE, TOKENTYPE_RIGHT_BRACE, TOKENTYPE_AMPERSAND, TOKENTYPE_PLUS, TOKENTYPE_MINUS, TOKENTYPE_MULTIPLY, TOKENTYPE_DIVIDE, TOKENTYPE_PIPE, TOKENTYPE_ARROW, TOKENTYPE_COLON, TOKENTYPE_SEMICOLON, TOKENTYPE_EQUALITY, TOKENTYPE_INEQUALITY, TOKENTYPE_LESSTHAN, TOKENTYPE_LESSEQUAL, TOKENTYPE_GREATERTHAN, TOKENTYPE_GREATEREQUAL, TOKENTYPE_COMMA, TOKENTYPE_BIND, TOKENTYPE_AS, TOKENTYPE_LEFT_PAREN, TOKENTYPE_RIGHT_PAREN, TOKENTYPE_ERROR, }; union TokenContent { StringView identifier; StringView error; int64_t integer; double decimal; }; typedef struct Token_s { enum TokenType type; union TokenContent get; } Token; #define TOKEN_NONE ((Token) {.type = TOKENTYPE_NONE, .get = {.error = STRINGVIEW_NONE } } ) Token Tokenizer_NextToken(StringView* source); const char* TokenType_ToString(enum TokenType type); #endif //header guard