token.h (1099B)
#pragma once
#include "str.h"
typedef enum Token_Type {
NOTYETSET = 5,
IDENT,
KEYWORD,
SYMBOL,
PLUS,
MINUS,
STAR,
SLASH,
BACKSLASH,
PERCENT,
LBRACE,
RBRACE,
LPAREN,
RPAREN,
EQ_EQ,
BANG_EQ,
EQ_GT,
LT_EQ,
EQ,
BANG,
PLUS_EQ,
MINUS_EQ,
STAR_EQ,
SLASH_EQ,
PERCENT_EQ,
QUESTION,
COLON,
SEMICOL,
PIPE,
PIPE_PIPE,
PIPE_EQ,
AMPERSAND,
AMPERSAND_EQ,
AMPERSAND_AMPERSAND,
CARET,
LT,
GT,
LT_LT,
GT_GT,
GT_EQ,
PLUS_PLUS,
MINUS_MINUS,
LT_MINUS,
MINUS_GT,
LIT_STRING,
LIT_DECIMAL,
LIT_INT,
LIT_BOOL,
LIT_VOID,
} Token_Type;
typedef enum Keyword {
IF = 157,
ELSE,
WHILE,
OPT,
LAZY,
MATCH,
DEF,
FOR,
EACH,
SOME,
NONE,
OK,
ERR,
IN,
IS,
CAST
} Keyword;
/////////////////////////////////////////////////
typedef struct Token {
Token_Type type;
Str lexeme;
const char* path;
const char* filename;
size_t line;
size_t col;
} Token;