summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWormHeamer2025-08-03 03:11:39 -0400
committerWormHeamer2025-08-03 03:11:39 -0400
commitaa2b1e194db5af11e8e70af07f304703b9ffe06f (patch)
tree7f3aa114673e1cebaac239efbf1fdd6f4cb83945
parent483334888ae5098ba4d9088698bcdea7ba4703ef (diff)
add comparison operators, single-line comments
-rw-r--r--lex.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/lex.c b/lex.c
index b9ee85c..922ef17 100644
--- a/lex.c
+++ b/lex.c
@@ -153,6 +153,12 @@ recurse:
goto recurse;
}
+ if (str_starts(str_skip(l->buf, i), S("//"))) {
+ Str f = str_findc(str_skip(l->buf, i), '\n');
+ l->ofs = f.s - l->buf.s;
+ goto recurse;
+ }
+
int start_ofs = i;
l->ident = (Str) { &l->buf.s[start_ofs], 0 };
l->pos = (LexSpan) { start_ofs, 0 };
@@ -194,6 +200,21 @@ recurse:
if (l->buf.s[i++] == '"') break;
}
break;
+ case '<':
+ switch (l->buf.s[i]) {
+ case '=': T(TOK_LTE); i++; break;
+ case '>': T(TOK_NEQ); i++; break;
+ case '<': T(TOK_SHL); i++; break;
+ default: T(TOK_LES); break;
+ }
+ break;
+ case '>':
+ switch (l->buf.s[i]) {
+ case '=': T(TOK_GTE); i++; break;
+ case '>': T(TOK_SHR); i++; break;
+ default: T(TOK_GTR); break;
+ }
+ break;
}
}
if (l->tok == TOK_MAX) {