#ifndef FZL_TOKEN_H #define FZL_TOKEN_H #include #include #include // Token type typedef enum { FZL_TOKTYPE_NAME, // abc FZL_TOKTYPE_TYPE, // i16 FZL_TOKTYPE_LPAREN, // ( FZL_TOKTYPE_RPAREN, // ) FZL_TOKTYPE_COMMA, // , FZL_TOKTYPE_DOT, // . FZL_TOKTYPE_STR_LITERAL, // "" FZL_TOKTYPE_NUM_LITERAL, // 123 FZL_TOKTYPE_STAR, // * FZL_TOKTYPE_SLASH, // / FZL_TOKTYPE_PLUS, // + FZL_TOKTYPE_MINUS, // - FZL_TOKTYPE_CARET, // ^ FZL_TOKTYPE_PERCENT, // % FZL_TOKTYPE_EQ // = } fzl_toktype_t; // Token descriptor typedef struct { fzl_toktype_t type; size_t ln; size_t cn; bool store_value; void *value; uint16_t value_sz; } fzl_token_t; // Allocate new token fzl_token_t *fzl_mktoken(const fzl_toktype_t type, size_t line, size_t col, void *value, size_t value_sz); // Free token and its contents void fzl_freetoken(fzl_token_t *token); #endif // FZL_TOKEN_H