#ifndef HENCE_TOKEN_H #define HENCE_TOKEN_H #define MAX_IDENT_LENGTH 128 enum TOKEN_TYPE { /* Nop token to indicate lexer success */ TOK_BEGIN, /* Keywords */ TOK_MODULE, TOK_INPUT, TOK_EXPR, TOK_COLON, TOK_EOL, TOK_OR, TOK_AND, TOK_XOR, TOK_NOT, TOK_NAND, TOK_NOR, /* Etc */ TOK_IDENT }; struct location { size_t line; size_t column; size_t leading_whitespace_len; }; struct token { enum TOKEN_TYPE type; struct location loc; char value[MAX_IDENT_LENGTH]; size_t span; struct token *next; }; #endif