diff options
author | Eric Blake <ebb9@byu.net> | 2006-10-19 16:19:20 +0000 |
---|---|---|
committer | Eric Blake <ebb9@byu.net> | 2007-10-06 07:07:07 -0600 |
commit | b9d7924e31f56d22f9348c7ea7ee29b9f5feff26 (patch) | |
tree | 196347d7cec4f08e15bdb2242af4dfec374f958b /examples | |
parent | 4f67b8f64e56cca016a57ea7e637417ac9e83a37 (diff) | |
download | m4-b9d7924e31f56d22f9348c7ea7ee29b9f5feff26.tar.gz |
* tests/generate.awk: For ease of doc-writing, simplify selection
of '-Ipath/to/examples' to '@comment examples'.
* examples/forloop.m4: Simplify.
* examples/forloop2.m4: New file.
* examples/quote.m4: New file.
* doc/m4.texinfo (Improved forloop): New node.
(Manual): Clarify use of examples directory.
(Shift, Forloop): Resync from branch.
(Include, Location): Update to new usage of examples directory.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/forloop.m4 | 14 | ||||
-rw-r--r-- | examples/forloop2.m4 | 12 | ||||
-rw-r--r-- | examples/quote.m4 | 9 |
3 files changed, 26 insertions, 9 deletions
diff --git a/examples/forloop.m4 b/examples/forloop.m4 index 74d69d23..fdca2608 100644 --- a/examples/forloop.m4 +++ b/examples/forloop.m4 @@ -1,10 +1,6 @@ -divert(-1) -# forloop(i, from, to, stmt) - -define(`forloop', `pushdef(`$1', `$2')_forloop(`$1', `$2', `$3', `$4')popdef(`$1')') +divert(`-1') +# forloop(var, from, to, stmt) - simple version +define(`forloop', `pushdef(`$1', `$2')_forloop($@)popdef(`$1')') define(`_forloop', - `$4`'ifelse($1, `$3', , - `define(`$1', incr($1))_forloop(`$1', `$2', `$3', `$4')')') -divert -forloop(`x', 1, 10, `2**x = eval(2**x) -') + `$4`'ifelse($1, `$3', `', `define(`$1', incr($1))$0($@)')') +divert`'dnl diff --git a/examples/forloop2.m4 b/examples/forloop2.m4 new file mode 100644 index 00000000..f1bdf0ef --- /dev/null +++ b/examples/forloop2.m4 @@ -0,0 +1,12 @@ +divert(`-1') +# forloop(var, from, to, stmt) - improved version: +# works even if VAR is not a strict macro name +# performs sanity check that FROM is larger than TO +# allows complex numerical expressions in TO and FROM +define(`forloop', `ifelse(eval(`($3) >= ($2)'), `1', + `pushdef(`$1', eval(`$2'))_forloop(`$1', + eval(`$3'), `$4')popdef(`$1')')') +define(`_forloop', + `$3`'ifelse(indir(`$1'), `$2', `', + `define(`$1', incr(indir(`$1')))$0($@)')') +divert`'dnl diff --git a/examples/quote.m4 b/examples/quote.m4 new file mode 100644 index 00000000..fae52c3e --- /dev/null +++ b/examples/quote.m4 @@ -0,0 +1,9 @@ +divert(`-1') +# quote(args) - convert args to single-quoted string +define(`quote', `ifelse(`$#', `0', `', ``$*'')') +# dquote(args) - convert args to quoted list of quoted strings +define(`dquote', ``$@'') +# dquote_elt(args) - convert args to list of double-quoted strings +define(`dquote_elt', `ifelse(`$#', `0', `', `$#', `1', ```$1''', + ```$1'',$0(shift($@))')') +divert`'dnl |