flup/src/tokenizer.h

55 lines
1.1 KiB
C

#ifndef FLUP_TOKENIZER_H
#define FLUP_TOKENIZER_H
#include "../submodules/utilitiec/src/StringView/StringView.h"
#include <stdint.h>
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