mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-10 10:01:13 +09:00
Shell: Parse a pipe sequence inside $(...)
This commit is contained in:
parent
8e078cf4ab
commit
42304d7bf1
Notes:
sideshowbarker
2024-07-19 05:09:16 +09:00
Author: https://github.com/alimpfard
Commit: 42304d7bf1
Pull-request: https://github.com/SerenityOS/serenity/pull/2542
Reviewed-by: https://github.com/awesomekling
Reviewed-by: https://github.com/bugaevc
4 changed files with 36 additions and 25 deletions
|
@ -633,18 +633,24 @@ RefPtr<AST::Node> Parser::parse_evaluate()
|
|||
return nullptr;
|
||||
|
||||
consume();
|
||||
if (peek() == '(') {
|
||||
consume();
|
||||
auto inner = parse_pipe_sequence();
|
||||
if (!inner || !expect(')'))
|
||||
inner = create<AST::SyntaxError>();
|
||||
else
|
||||
inner = create<AST::Execute>(move(inner), true);
|
||||
return inner;
|
||||
}
|
||||
auto inner = parse_expression();
|
||||
|
||||
if (!inner) {
|
||||
inner = create<AST::SyntaxError>();
|
||||
} else {
|
||||
if (inner->is_list()) {
|
||||
auto execute_inner = create<AST::Execute>(move(inner));
|
||||
execute_inner->capture_stdout();
|
||||
auto execute_inner = create<AST::Execute>(move(inner), true);
|
||||
inner = execute_inner;
|
||||
} else {
|
||||
// Trying to evaluate something other than a list
|
||||
// FIXME: This bit be dynamic, what do?
|
||||
auto dyn_inner = create<AST::DynamicEvaluate>(move(inner));
|
||||
inner = dyn_inner;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue