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,