diff options
Diffstat (limited to 'core/lexer.c')
| -rw-r--r-- | core/lexer.c | 30 |
1 files changed, 30 insertions, 0 deletions
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); |
