From 5f726024711e0c803a50e3124820d7d4b214dd93 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sat, 23 May 2026 09:01:18 -0400 Subject: core: lexer: Add operational tokens Signed-off-by: Ian Moffett --- core/lexer.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'core/lexer.c') diff --git a/core/lexer.c b/core/lexer.c index 36818bc..27b395e 100644 --- a/core/lexer.c +++ b/core/lexer.c @@ -304,6 +304,18 @@ lexer_nom(struct cescal_state *state, struct token *res) res->type = TT_COLON; res->c = c; return 0; + case '+': + res->type = TT_PLUS; + res->c = c; + return 0; + case '*': + res->type = TT_STAR; + res->c = c; + return 0; + case '=': + res->type = TT_EQUALS; + res->c = c; + return 0; case '#': if ((c = lexer_consume_single(state, true)) == '\0') { return -1; @@ -318,21 +330,26 @@ lexer_nom(struct cescal_state *state, struct token *res) return 0; case '/': - if (lexer_consume_single(state, true) == '/') { + if ((c = lexer_consume_single(state, true)) == '/') { res->type = TT_COMMENT; res->c = c; lexer_skip_comment(state); return 0; } - return -1; + lexer_putback(state, c); + res->type = TT_SLASH; + return 0; case '-': res->c = c; - if (lexer_consume_single(state, true) == '>') { + if ((c = lexer_consume_single(state, true)) == '>') { res->type = TT_ARROW; return 0; } - return -1; + + lexer_putback(state, c); + res->type = TT_MINUS; + return 0; default: if (lexer_scan_ident(state, c, res) == 0) { lexer_check_kw(state, res); -- cgit v1.2.3