From b98487caafdcc796590614ff46b2bcd9579a867a Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Fri, 20 Feb 2026 09:35:50 +1100 Subject: [PATCH] comments --- README.md | 2 +- src/lexer/lexer.c | 37 +++++++++++++++++++++++++++++++++++++ test.sols | 2 ++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 938925a..b30f7f2 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ bash build.c - [x] char - [x] bool - [x] Lex keywords - - [ ] Ignore comments (//, /**/, #) + - [x] Ignore comments (//, /**/, #) - [ ] Lex delimiters - [x] () - [x] {} diff --git a/src/lexer/lexer.c b/src/lexer/lexer.c index 9d42cf7..16b51f6 100644 --- a/src/lexer/lexer.c +++ b/src/lexer/lexer.c @@ -371,6 +371,43 @@ ResultType(voidptr, charptr) lex(SolsLexer* lexer) { break; } + if (chr.as.success == '/' && !inString) { + ResultType(char, Nothing) peek = lexerPeek(lexer, 1); + if (!peek.error && peek.as.success == '/') { + chr = lexerConsume(lexer); + for (;;) { + chr = lexerConsume(lexer); + if (chr.error) return Success(voidptr, charptr, NULL); + if (chr.as.success == '\n') { + chr = lexerConsume(lexer); + break; + } + } + } else if (!peek.error && peek.as.success == '*') { + for (;;) { + chr = lexerConsume(lexer); + if (chr.error) return Success(voidptr, charptr, NULL); + if (chr.as.success == '*') { + peek = lexerPeek(lexer, 1); + if (!peek.error && peek.as.success == '/') { + chr = lexerConsume(lexer); + break; + } + } + } + } + } + if (chr.as.success == '#' && !inString) { + for (;;) { + chr = lexerConsume(lexer); + if (chr.error) return Success(voidptr, charptr, NULL); + if (chr.as.success == '\n') { + chr = lexerConsume(lexer); + break; + } + } + } + if (chr.as.success == '\n') { for (; lineStart < lexer->inputsize; lineStart++) { if (lexer->input[lineStart] == '\n') { diff --git a/test.sols b/test.sols index b189af3..f9d03fa 100644 --- a/test.sols +++ b/test.sols @@ -1,3 +1,5 @@ +// heheheha comment + puts "dinglefart" if 3 == 3 {