From 39125cea50d94f9ed221ee6fe6060cb6a1987b18 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Tue, 12 May 2026 22:45:05 +0100 Subject: [PATCH] parse: lex: switch from arithmetic to statement when scanning =, |, and \n --- bshell/parse/lex/arithmetic.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bshell/parse/lex/arithmetic.c b/bshell/parse/lex/arithmetic.c index c9940b9..dfc0fa7 100644 --- a/bshell/parse/lex/arithmetic.c +++ b/bshell/parse/lex/arithmetic.c @@ -135,7 +135,7 @@ static enum bshell_status arithmetic_pump_token(struct lex_ctx *ctx) if (newline) { struct lex_token *tok = lex_token_create(TOK_LINEFEED); enqueue_token(ctx, tok); - lex_state_change(ctx, LEX_STATE_STATEMENT); + handle_lex_state_transition(ctx, TOK_LINEFEED); return BSHELL_SUCCESS; } @@ -148,10 +148,13 @@ static enum bshell_status arithmetic_pump_token(struct lex_ctx *ctx) static const struct lex_state_link links[] = { LINK_CHANGE(TOK_WORD, LEX_STATE_COMMAND), + LINK_CHANGE(SYM_EQUAL, LEX_STATE_STATEMENT), LINK_PUSH(SYM_DQUOTE, LEX_STATE_STRING, 0), LINK_PUSH(SYM_DOLLAR_LEFT_PAREN, LEX_STATE_STATEMENT, 0), LINK_POP(SYM_RIGHT_PAREN), LINK_CHANGE(SYM_SEMICOLON, LEX_STATE_STATEMENT), + LINK_CHANGE(TOK_LINEFEED, LEX_STATE_STATEMENT), + LINK_CHANGE(SYM_PIPE, LEX_STATE_STATEMENT), LINK_PUSH(SYM_AT_LEFT_BRACE, LEX_STATE_HASHTABLE, 0), LINK_PUSH( SYM_LEFT_PAREN,