aboutsummaryrefslogtreecommitdiff
path: root/shell/hush_doc.txt
diff options
context:
space:
mode:
Diffstat (limited to 'shell/hush_doc.txt')
-rw-r--r--shell/hush_doc.txt13
1 files changed, 9 insertions, 4 deletions
diff --git a/shell/hush_doc.txt b/shell/hush_doc.txt
index 39f7dcee5..c68dc2416 100644
--- a/shell/hush_doc.txt
+++ b/shell/hush_doc.txt
@@ -2,9 +2,10 @@
2 2
3 Command parsing 3 Command parsing
4 4
5Command parsing results in "pipe" structures. "Pipe" structure 5Command parsing results in a list of "pipe" structures.
6does not always correspond to what sh language calls "pipe", 6This list correspond not only to usual "pipe1 || pipe2 && pipe3"
7it also controls execution of if, while, etc statements. 7lists, but it also controls execution of if, while, etc statements.
8Every such statement is a list for hush. List consists of pipes.
8 9
9struct pipe fields: 10struct pipe fields:
10 smallint res_word - "none" for normal commands, 11 smallint res_word - "none" for normal commands,
@@ -18,7 +19,7 @@ Blocks of commands { pipe; pipe; } and (pipe; pipe) are represented
18as one pipe struct with one progs[0] element which is a "group" - 19as one pipe struct with one progs[0] element which is a "group" -
19struct child_prog can contain a list of pipes. Sometimes these 20struct child_prog can contain a list of pipes. Sometimes these
20"groups" are created implicitly, e.g. every control 21"groups" are created implicitly, e.g. every control
21statement (if, while, etc) sits inside its own "pipe" struct). 22statement (if, while, etc) sits inside its own group.
22 23
23res_word controls statement execution. Examples: 24res_word controls statement execution. Examples:
24 25
@@ -41,6 +42,10 @@ res_word=NONE followup=SEQ
41 pipe 4 res_word=NONE followup=(null) 42 pipe 4 res_word=NONE followup=(null)
42pipe 1 res_word=NONE followup=SEQ 43pipe 1 res_word=NONE followup=SEQ
43 44
45Above you see that if is a list, and it sits in a {} group
46implicitly created by hush. Also note two THEN res_word's -
47it is explained below.
48
44"if true; then { echo Hello; true; }; fi" - 49"if true; then { echo Hello; true; }; fi" -
45pipe 0 res_word=NONE followup=SEQ 50pipe 0 res_word=NONE followup=SEQ
46 prog 0 group {}: 51 prog 0 group {}: