From 3e3ccae003ad0990555d17590588672aedc428c4 Mon Sep 17 00:00:00 2001 From: "Chloe M." Date: Sat, 23 May 2026 08:09:05 -0400 Subject: core: lexer: Add comment skipping Signed-off-by: Chloe M. --- core/lexer.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'core/lexer.c') diff --git a/core/lexer.c b/core/lexer.c index 617ba41..26ab451 100644 --- a/core/lexer.c +++ b/core/lexer.c @@ -183,6 +183,27 @@ lexer_check_kw(struct cescal_state *state, struct token *res) } } +/* + * Skip anything after a comment + * + * @state: Compiler state + */ +static void +lexer_skip_comment(struct cescal_state *state) +{ + char c; + + if (state == NULL) { + return; + } + + while ((c = lexer_consume_single(state, false)) != '\n') { + if (c == '\0') { + break; + } + } +} + int lexer_nom(struct cescal_state *state, struct token *res) { @@ -210,6 +231,15 @@ lexer_nom(struct cescal_state *state, struct token *res) res->type = TT_COMMA; res->c = c; return 0; + case '/': + if (lexer_consume_single(state, true) == '/') { + res->type = TT_COMMENT; + res->c = c; + lexer_skip_comment(state); + return 0; + } + + return -1; default: if (lexer_scan_ident(state, c, res) == 0) { lexer_check_kw(state, res); -- cgit v1.2.3