commit f7946e20cdc617207a36a264500f6167db548673
parent 8370e7cd1c901c76e0fca560e8f7622d972d9359
Author: citbl <citbl@citbl.org>
Date: Thu, 25 Jun 2026 17:24:46 +1000
refac
Diffstat:
2 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/src/lexer.c b/src/lexer.c
@@ -62,7 +62,7 @@ skip_space_and_comments(Lexer* lex)
}
static Token
-make_ident(Lexer* lex, size_t pos, size_t line, size_t col)
+make_ident(Lexer* lex, size_t start, size_t line, size_t col)
{
for (;;) {
char c = peek(lex);
@@ -74,34 +74,34 @@ make_ident(Lexer* lex, size_t pos, size_t line, size_t col)
TokenType type = TOKEN_IDENT;
- if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "return", 6) == 0)
+ if ((lex->pos - start) == 6 && strncmp(lex->src + start, "return", 6) == 0)
type = TOKEN_RETURN;
- else if ((lex->pos - pos) == 3 && strncmp(lex->src + pos, "for", 3) == 0)
+ else if ((lex->pos - start) == 3 && strncmp(lex->src + start, "for", 3) == 0)
type = TOKEN_FOR;
- else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "if", 2) == 0)
+ else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "if", 2) == 0)
type = TOKEN_IF;
- else if ((lex->pos - pos) == 4 && strncmp(lex->src + pos, "else", 4) == 0)
+ else if ((lex->pos - start) == 4 && strncmp(lex->src + start, "else", 4) == 0)
type = TOKEN_ELSE;
- else if ((lex->pos - pos) == 8 && strncmp(lex->src + pos, "continue", 8) == 0)
+ else if ((lex->pos - start) == 8 && strncmp(lex->src + start, "continue", 8) == 0)
type = TOKEN_CONTINUE;
- else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "break", 5) == 0)
+ else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "break", 5) == 0)
type = TOKEN_BREAK;
- else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "while", 5) == 0)
+ else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "while", 5) == 0)
type = TOKEN_WHILE;
- else if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "struct", 6) == 0)
+ else if ((lex->pos - start) == 6 && strncmp(lex->src + start, "struct", 6) == 0)
type = TOKEN_STRUCT;
- else if ((lex->pos - pos) == 6 && strncmp(lex->src + pos, "extend", 6) == 0)
+ else if ((lex->pos - start) == 6 && strncmp(lex->src + start, "extend", 6) == 0)
type = TOKEN_EXTEND;
- else if ((lex->pos - pos) == 4 && strncmp(lex->src + pos, "true", 4) == 0)
+ else if ((lex->pos - start) == 4 && strncmp(lex->src + start, "true", 4) == 0)
type = TOKEN_BOOL_TRUE_LITERAL;
- else if ((lex->pos - pos) == 5 && strncmp(lex->src + pos, "false", 5) == 0)
+ else if ((lex->pos - start) == 5 && strncmp(lex->src + start, "false", 5) == 0)
type = TOKEN_BOOL_FALSE_LITERAL;
- else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "fx", 2) == 0)
+ else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "fx", 2) == 0)
type = TOKEN_FX;
- else if ((lex->pos - pos) == 2 && strncmp(lex->src + pos, "fn", 2) == 0)
+ else if ((lex->pos - start) == 2 && strncmp(lex->src + start, "fn", 2) == 0)
type = TOKEN_FN;
// Check for keywords, or a Capitalised CustomType
// -- @later do it in the parser, keep types as unprotected names
@@ -121,7 +121,7 @@ make_ident(Lexer* lex, size_t pos, size_t line, size_t col)
// }
// }
- return (Token) { .type = type, .start = pos, .line = line, .col = col, .end = lex->pos };
+ return (Token) { .type = type, .start = start, .line = line, .col = col, .end = lex->pos };
}
static Token
make_number(Lexer* lex, size_t pos, size_t line, size_t col)
diff --git a/src/lexer.h b/src/lexer.h
@@ -1,6 +1,7 @@
#pragma once
#include <stdlib.h>
+
#include "types.h"
void lexer_lex(Lexer*, const char* filename, const char* contents);