summaryrefslogtreecommitdiff
path: root/src/preproc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/preproc.c')
-rw-r--r--src/preproc.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/preproc.c b/src/preproc.c
index 63e618f..d64f4c3 100644
--- a/src/preproc.c
+++ b/src/preproc.c
@@ -80,6 +80,7 @@ Pipeline* process_token_sequence(TokenVec tokens, PipelineVec* pl_pool) {
ExpandedToken curr_tok = *get_from_ExpandedTokenVec(&exp_tokens, i);
ExpandedToken next_tok;
Redirect rd;
+ Pipeline* sub_pl;
switch (curr_tok.kind) {
case TOK_WORD:
push_to_ArgVec(&curr_cmd.args, (Arg){.kind = ARG_LIT, .as.lit_str = curr_tok.as.word});
@@ -118,8 +119,14 @@ Pipeline* process_token_sequence(TokenVec tokens, PipelineVec* pl_pool) {
exit(63);
}
break;
- default:
- exit(62);
+ case SPEC_SUB_IN:
+ sub_pl = process_token_sequence(*(TokenVec*)curr_tok.as.spec.as.proc_sub_region, pl_pool);
+ push_to_ArgVec(&curr_cmd.args, (Arg){.kind = ARG_PS_IN, .as.sub_pipeline = sub_pl});
+ break;
+ case SPEC_SUB_OUT:
+ sub_pl = process_token_sequence(*(TokenVec*)curr_tok.as.spec.as.proc_sub_region, pl_pool);
+ push_to_ArgVec(&curr_cmd.args, (Arg){.kind = ARG_PS_OUT, .as.sub_pipeline = sub_pl});
+ break;
}
}
}
@@ -129,7 +136,6 @@ Pipeline* process_token_sequence(TokenVec tokens, PipelineVec* pl_pool) {
PipelineTree process_ast(Ast ast) {
PipelineVec pls = make_PipelineVec(256);
- TokenVec root_toks = *ast.root;
- Pipeline* root_pl = process_token_sequence(root_toks, &pls);
+ Pipeline* root_pl = process_token_sequence(*ast.root, &pls);
return (PipelineTree){.pl_pool = pls, root_pl};
}