From e489a2db5a1e56e66f6df12642ad8cfd988d4b30 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Wed, 16 Sep 2026 11:28:14 +0000 Subject: implement subshell, and fix vector operator[] unvalid index --- src/lexer/ast.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/lexer/ast.cc') diff --git a/src/lexer/ast.cc b/src/lexer/ast.cc index 292728b..da96c6f 100644 --- a/src/lexer/ast.cc +++ b/src/lexer/ast.cc @@ -65,10 +65,11 @@ void T_lexer::parse(size_t cmd_begin, size_t cmd_end, size_t ast_vec) // if it's fully inside bracket // then it's subshell - loggerln("parse: left token type: {}, right: {}", - magic_enum::enum_name(token[cmd_begin].token_type), - magic_enum::enum_name(token[cmd_end-1].token_type)); - if (token[cmd_begin].token_type == LEFT_BRACKET && token[cmd_end-1].token_type == RIGHT_BRACKET) + if (cmd_begin != cmd_end) + loggerln("parse: left token type: {}, right: {}", + magic_enum::enum_name(token[cmd_begin].token_type), + magic_enum::enum_name(token[cmd_end-1].token_type)); + if (cmd_begin != cmd_end && token[cmd_begin].token_type == LEFT_BRACKET && token[cmd_end-1].token_type == RIGHT_BRACKET) { ast[ast_vec].subshell = true; loggerln("parse: detect subshell {}", ast_vec); -- cgit v1.3.1-4-g156e