diff options
| author | WormHeamer | 2025-08-01 22:53:33 -0400 |
|---|---|---|
| committer | WormHeamer | 2025-08-01 22:53:33 -0400 |
| commit | 9455b73b42d0fb7100b9afd662818b0199ae510c (patch) | |
| tree | 09a28ac499cf31993e844b78faad55121c3570ae /lex.h | |
| parent | a01075f6801f0310f3de4fe85f0d8ed2c21c47a9 (diff) | |
begin working on graph IR
Diffstat (limited to 'lex.h')
| -rw-r--r-- | lex.h | 51 |
1 files changed, 28 insertions, 23 deletions
@@ -4,27 +4,27 @@ #include "str.h" #define LEX_TOK_LIST\ - X(TOK_EOF, "end-of-file")\ - X(TOK_IDENT, "identifier")\ - X(TOK_PROC, "proc")\ - X(TOK_LET, "let")\ - X(TOK_VAR, "var")\ - X(TOK_CONST, "const")\ - X(TOK_RETURN, "return")\ - X(TOK_LBRACE, "{")\ - X(TOK_RBRACE, "}")\ - X(TOK_LPAREN, "(")\ - X(TOK_RPAREN, ")")\ - X(TOK_PLUS, "+")\ - X(TOK_MINUS, "-")\ - X(TOK_ASTERISK, "*")\ - X(TOK_SLASH, "/")\ - X(TOK_EQUALS, "=")\ - X(TOK_COLON, ":")\ - X(TOK_COMMA, ",")\ - X(TOK_LIT_STR, "string literal")\ - X(TOK_LIT_CHAR, "character literal")\ - X(TOK_LIT_NUM, "numeric literal") + X(EOF, "end-of-file")\ + X(IDENT, "identifier")\ + X(PROC, "proc")\ + X(LET, "let")\ + X(VAR, "var")\ + X(CONST, "const")\ + X(RETURN, "return")\ + X(LBRACE, "{")\ + X(RBRACE, "}")\ + X(LPAREN, "(")\ + X(RPAREN, ")")\ + X(PLUS, "+")\ + X(MINUS, "-")\ + X(ASTERISK, "*")\ + X(SLASH, "/")\ + X(EQUALS, "=")\ + X(COLON, ":")\ + X(COMMA, ",")\ + X(LIT_STR, "string literal")\ + X(LIT_CHAR, "character literal")\ + X(LIT_NUM, "numeric literal") #define LEX_TOK_CHAR_LIST\ X(TOK_LBRACE, '{')\ @@ -40,7 +40,7 @@ X(TOK_COMMA, ',') typedef enum { -#define X(n, s) n, +#define X(n, s) TOK_##n, LEX_TOK_LIST #undef X TOK_MAX, @@ -53,7 +53,12 @@ static const char *lex_tok_str[TOK_MAX] = { }; #define TMASK(t) (1L << t) -typedef unsigned long TokMask; + +typedef enum { +#define X(n, s) TM_##n = TMASK(TOK_##n), + LEX_TOK_LIST +#undef X +} TokMask; typedef struct { Token tok; |
