summaryrefslogtreecommitdiff
path: root/src/preproc.c
diff options
context:
space:
mode:
authorÁkos Kőrösi <korakos99@gmail.com>2026-05-21 14:13:22 +0200
committerÁkos Kőrösi <korakos99@gmail.com>2026-05-21 14:13:22 +0200
commit202f4f3a9b7818359d89ef2583618b397e1824b4 (patch)
treefae26d260720f0d67187dc59d8ff34f2b73f54cb /src/preproc.c
parentfc27548c447ed9bcd07493983431e0a6e72c7cef (diff)
start setting up proc sub
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};
}