diff options
Diffstat (limited to 'src/lexer.c')
-rw-r--r-- | src/lexer.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lexer.c b/src/lexer.c index df998f2..6a5621c 100644 --- a/src/lexer.c +++ b/src/lexer.c | |||
@@ -1,6 +1,8 @@ | |||
1 | #include "badlib.h" | ||
2 | |||
1 | #define LEXER_MEM GB(2) | 3 | #define LEXER_MEM GB(2) |
2 | 4 | ||
3 | typedef enum TokenType { | 5 | typedef enum TokenKind { |
4 | TOK_UNKNOWN = 0, | 6 | TOK_UNKNOWN = 0, |
5 | 7 | ||
6 | // Parentheses. | 8 | // Parentheses. |
@@ -65,7 +67,7 @@ typedef enum TokenType { | |||
65 | 67 | ||
66 | // End of file. | 68 | // End of file. |
67 | TOK_EOF, | 69 | TOK_EOF, |
68 | } TokenType; | 70 | } TokenKind; |
69 | 71 | ||
70 | Str token_str[] = { | 72 | Str token_str[] = { |
71 | [TOK_UNKNOWN] = cstr("UNKNOWN"), | 73 | [TOK_UNKNOWN] = cstr("UNKNOWN"), |
@@ -135,7 +137,7 @@ Str token_str[] = { | |||
135 | }; | 137 | }; |
136 | 138 | ||
137 | typedef struct Token { | 139 | typedef struct Token { |
138 | TokenType type; | 140 | TokenKind kind; |
139 | Str val; | 141 | Str val; |
140 | sz line; | 142 | sz line; |
141 | sz col; | 143 | sz col; |
@@ -256,7 +258,7 @@ scan_skip_until_valid(Scanner *scanner) { | |||
256 | } | 258 | } |
257 | 259 | ||
258 | Token | 260 | Token |
259 | emit_token(Scanner current, Scanner *scanner, TokenType t) { | 261 | emit_token(Scanner current, Scanner *scanner, TokenKind t) { |
260 | Str val = current.str; | 262 | Str val = current.str; |
261 | val.size = current.str.size - scanner->str.size; | 263 | val.size = current.str.size - scanner->str.size; |
262 | val.size = val.size < 0 ? 0 : val.size; | 264 | val.size = val.size < 0 ? 0 : val.size; |
@@ -264,7 +266,7 @@ emit_token(Scanner current, Scanner *scanner, TokenType t) { | |||
264 | .val = val, | 266 | .val = val, |
265 | .line = current.line + 1, | 267 | .line = current.line + 1, |
266 | .col = current.col + 1, | 268 | .col = current.col + 1, |
267 | .type = t, | 269 | .kind = t, |
268 | }; | 270 | }; |
269 | } | 271 | } |
270 | 272 | ||
@@ -274,7 +276,7 @@ emit_token_err(Scanner *scanner, Str err_msg) { | |||
274 | .line = scanner->line + 1, | 276 | .line = scanner->line + 1, |
275 | .col = scanner->col + 1, | 277 | .col = scanner->col + 1, |
276 | .val = err_msg, | 278 | .val = err_msg, |
277 | .type = TOK_UNKNOWN, | 279 | .kind = TOK_UNKNOWN, |
278 | }; | 280 | }; |
279 | } | 281 | } |
280 | 282 | ||
@@ -430,7 +432,7 @@ scan_token(Scanner *scanner) { | |||
430 | *scanner = current; | 432 | *scanner = current; |
431 | return emit_token_number(scanner); | 433 | return emit_token_number(scanner); |
432 | } | 434 | } |
433 | return emit_token(current, scanner, TOK_ADD); | 435 | return emit_token(current, scanner, TOK_SUB); |
434 | }; | 436 | }; |
435 | case '*': | 437 | case '*': |
436 | return emit_token(current, scanner, TOK_MUL); | 438 | return emit_token(current, scanner, TOK_MUL); |