summaryrefslogtreecommitdiff
path: root/src/tokenizer.cc
diff options
context:
space:
mode:
authorFabrice <fabrice@schaub-dev.xyz>2026-03-03 17:23:50 +0100
committerFabrice <fabrice@schaub-dev.xyz>2026-03-03 17:23:50 +0100
commitc1cbfb1feefc309108d6e547122c64f66dfaedb1 (patch)
tree4841b98d96459a0fd81867bdffc98173575f4661 /src/tokenizer.cc
parent22b860ab3fbd04768aeedf0ba0725b70f42f27dd (diff)
fixed
Diffstat (limited to 'src/tokenizer.cc')
-rw-r--r--src/tokenizer.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/tokenizer.cc b/src/tokenizer.cc
index 498bca3..6f30659 100644
--- a/src/tokenizer.cc
+++ b/src/tokenizer.cc
@@ -71,12 +71,19 @@ static bool tokenizer_get_buffer(Tokenizer* tokenizer, usize* cursor) {
return true;
}
+static void tokenizer_advance(usize* offset, usize nbytes) {
+ assert_neq(offset, nullptr);
+ *offset += nbytes;
+}
+
static Token tokenizer_lex_identifier(Tokenizer* tokenizer, usize start, usize *offset) {
assert_neq(tokenizer, nullptr);
wchar c;
- while (tokenizer_advance(tokenizer, offset, &c))
+ while (tokenizer_char(tokenizer, *offset, &c)) {
if (!utf8_is_alnum(c) && c != '_') break;
+ tokenizer_advance(offset, 1);
+ }
return tokenizer_make_token(tokenizer, Token_Kind_Identifier, start, *offset);
}
@@ -90,9 +97,8 @@ bool tokenizer_next(Tokenizer* tokenizer, Token* out) {
usize advance = cursor;
wchar c;
- (void)tokenizer_advance(tokenizer, &advance,
- &c); // We just checked that we are not at the end
-
+ (void)tokenizer_char(tokenizer, advance, &c);
+
if (utf8_is_identifier(c)) {
*out = tokenizer_lex_identifier(tokenizer, cursor, &advance);
goto out;