diff options
author | Denis Vlasenko | 2008-07-28 23:04:34 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-07-28 23:04:34 +0000 |
commit | bcb25537d02b50ce26678defcf4f39d0c89f5b3b (patch) | |
tree | 4a8a8068c8078d893fb1036e5e5d33634f26cb7d /shell/hush_doc.txt | |
parent | cf22c89f9a7d19166fa038d3bb2bac3011f946fd (diff) | |
download | busybox-bcb25537d02b50ce26678defcf4f39d0c89f5b3b.zip busybox-bcb25537d02b50ce26678defcf4f39d0c89f5b3b.tar.gz |
hush: implement break and continue
function old new delta
bltins 252 276 +24
builtin_continue - 12 +12
builtin_break - 12 +12
static.version_str 18 17 -1
run_list 1984 1948 -36
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 1/2 up/down: 48/-27) Total: 11 bytes
Diffstat (limited to 'shell/hush_doc.txt')
-rw-r--r-- | shell/hush_doc.txt | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/shell/hush_doc.txt b/shell/hush_doc.txt index 39f7dce..c68dc24 100644 --- a/shell/hush_doc.txt +++ b/shell/hush_doc.txt @@ -2,9 +2,10 @@ Command parsing -Command parsing results in "pipe" structures. "Pipe" structure -does not always correspond to what sh language calls "pipe", -it also controls execution of if, while, etc statements. +Command parsing results in a list of "pipe" structures. +This list correspond not only to usual "pipe1 || pipe2 && pipe3" +lists, but it also controls execution of if, while, etc statements. +Every such statement is a list for hush. List consists of pipes. struct pipe fields: smallint res_word - "none" for normal commands, @@ -18,7 +19,7 @@ Blocks of commands { pipe; pipe; } and (pipe; pipe) are represented as one pipe struct with one progs[0] element which is a "group" - struct child_prog can contain a list of pipes. Sometimes these "groups" are created implicitly, e.g. every control -statement (if, while, etc) sits inside its own "pipe" struct). +statement (if, while, etc) sits inside its own group. res_word controls statement execution. Examples: @@ -41,6 +42,10 @@ res_word=NONE followup=SEQ pipe 4 res_word=NONE followup=(null) pipe 1 res_word=NONE followup=SEQ +Above you see that if is a list, and it sits in a {} group +implicitly created by hush. Also note two THEN res_word's - +it is explained below. + "if true; then { echo Hello; true; }; fi" - pipe 0 res_word=NONE followup=SEQ prog 0 group {}: |