From 29138fff8643194ec49cb79304d2a878d46c378b Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Tue, 16 Nov 2021 12:08:59 -0800 Subject: Feat: added heredocs Heredocs are simply strings written to tmp files. There was minimal bug testing here. Also, various bug fixes are included --- src/cmd/rc/syntax.y | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/cmd/rc/syntax.y') diff --git a/src/cmd/rc/syntax.y b/src/cmd/rc/syntax.y index 64ebb41..4acd92f 100644 --- a/src/cmd/rc/syntax.y +++ b/src/cmd/rc/syntax.y @@ -76,7 +76,7 @@ assign: redir: Tdup -| Tredir word { $$ = hangchild1($1, $2, 0); } +| Tredir word { $$ = hangchild1($1, ($1->redir.type == Rhere)?heredoc($2):$2, 0); } epilog: /* empty */ { $$ = nil; } @@ -97,7 +97,7 @@ cmd: | Tfor '(' word ')' nl cmd { $$ = hangchild3($1, $3, nil, $6); } | Tfor '(' word Tin words ')' nl cmd { $$ = hangchild3($1, $3, $5, $8); } | Twhile paren nl cmd { $$ = hangchild2($1, $2, 0, $4, 1); } -| Tif paren nl ifbody { $$ = hangchild1($2, $2, 0); } +| Tif paren nl ifbody { $$ = hangchild1($4, $2, 0); } | Tswitch '(' word ')' nl '{' nl casebody '}' { $$ = hangchild2($1, $3, 0, $8, 1); } | Tfunc words block { $$ = hangchild2($1, $2, 0, $3, 1); } -- cgit v1.2.1