diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-12-15 06:06:41 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-12-15 06:06:41 -0800 |
commit | 10600bbfbbc0a427369c8ea02eca9ac00f6019ac (patch) | |
tree | 40a6fa1dee943bd364a79a7abbccbfba5bb5491f /share | |
parent | 6b6bba24faf05a00e1f5e50df309a76348cf8c97 (diff) | |
download | txr-10600bbfbbc0a427369c8ea02eca9ac00f6019ac.tar.gz txr-10600bbfbbc0a427369c8ea02eca9ac00f6019ac.tar.bz2 txr-10600bbfbbc0a427369c8ea02eca9ac00f6019ac.zip |
awk: condense implementation of range-macros.
* share/txr/stdlib/awk.tl (sys:awk-mac-let): Move repeated
boiler-plate code from the various rng macrolets into an
the implementation of the sys:rng macro they rely on.
That implementation is split into two macros: sys:rng is
now the name of a wrapper which adds the boiler-plate, and the
bulky implementation macrolet is now called sys:rng-impl.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/awk.tl | 49 |
1 files changed, 13 insertions, 36 deletions
diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl index 5e658fd2..a0ba3de8 100644 --- a/share/txr/stdlib/awk.tl +++ b/share/txr/stdlib/awk.tl @@ -371,6 +371,10 @@ (again () '(return-from :awk-rec :awk-again)) (next-file () '(return-from :awk-file)) (sys:rng (form from-expr to-expr :env e) + ^(sys:rng-impl ,form + (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) + (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) + (sys:rng-impl (form from-expr to-expr :env e) (let* ((style (car form)) (ix (pinc (qref ,awc nranges))) (rng-temp (gensym)) @@ -435,42 +439,15 @@ (t t)))))) (qref ,awc rng-exprs)))) rng-temp))) - (rng (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (-rng (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (rng- (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (-rng- (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (--rng (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (--rng- (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (rng+ (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (-rng+ (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) - (--rng+ (:form form from-expr to-expr) - ^(sys:rng ,form - (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) - (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) + (rng (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (-rng (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (rng- (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (-rng- (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (--rng (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (--rng- (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (rng+ (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (-rng+ (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) + (--rng+ (:form form from-expr to-expr) ^(sys:rng ,form ,from-expr ,to-expr)) (ff (. opip-args) ^(symacrolet ((f (rslot ,',aws-sym 'fields 'f-to-rec))) (set f [(opip ,*opip-args) f]))) |