summaryrefslogtreecommitdiff
path: root/src/lexer
diff options
context:
space:
mode:
authormelektron <matteo@elektron.work>2026-01-14 02:46:14 +0100
committermelektron <matteo@elektron.work>2026-01-14 02:46:14 +0100
commit4a942f3deacdff8846318d58e7a963f589c189cd (patch)
tree17e4a8e316a5f7b6edd02502c6c992f723c853be /src/lexer
parentb3e2dfca70fbd241766783d665a1b2eff7134d92 (diff)
Added support for block comments using /* */ syntax
Diffstat (limited to 'src/lexer')
-rw-r--r--src/lexer/token.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lexer/token.c b/src/lexer/token.c
index 6ada798..84b9714 100644
--- a/src/lexer/token.c
+++ b/src/lexer/token.c
@@ -82,6 +82,41 @@ Token lexer_next(Lexer *l)
return lexer_next(l);
}
+ // Block Comments.
+ if (s[0] == '/' && s[1] == '*')
+ {
+ // skip two start chars
+ l->pos += 2;
+ s += 2;
+
+ while (s[0])
+ {
+ // s[len+1] can be at most the null terminator
+ if (s[0] == '*' && s[1] == '/')
+ {
+ // go over */
+ l->pos += 2;
+ s += 2;
+ break;
+ }
+
+ if (s[0] == '\n')
+ {
+ l->line++;
+ l->col = 1;
+ }
+ else
+ {
+ l->col++;
+ }
+
+ l->pos++;
+ s++;
+ }
+
+ return lexer_next(l);
+ }
+
// Identifiers.
if (is_ident_start(*s))
{