aboutsummaryrefslogtreecommitdiff
path: root/src/lexer/ast.cc
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-09-16 11:28:14 +0000
committer_ov4 <ov4@ov4.org>2026-09-16 11:28:14 +0000
commite489a2db5a1e56e66f6df12642ad8cfd988d4b30 (patch)
treeaafcb1d962e9ce24ddccf00aff82d0ed0804fc4c /src/lexer/ast.cc
parent165ead4adbf8494db82f7be35c6f8d52ac47ebef (diff)
implement subshell, and fix vector operator[] unvalid index
Diffstat (limited to 'src/lexer/ast.cc')
-rw-r--r--src/lexer/ast.cc9
1 files changed, 5 insertions, 4 deletions
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);