summaryrefslogtreecommitdiff
path: root/lex.h
diff options
context:
space:
mode:
authorWormHeamer2025-08-01 22:53:33 -0400
committerWormHeamer2025-08-01 22:53:33 -0400
commit9455b73b42d0fb7100b9afd662818b0199ae510c (patch)
tree09a28ac499cf31993e844b78faad55121c3570ae /lex.h
parenta01075f6801f0310f3de4fe85f0d8ed2c21c47a9 (diff)
begin working on graph IR
Diffstat (limited to 'lex.h')
-rw-r--r--lex.h51
1 files changed, 28 insertions, 23 deletions
diff --git a/lex.h b/lex.h
index 460636a..daf71cc 100644
--- a/lex.h
+++ b/lex.h
@@ -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;