summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-12-15 06:06:41 -0800
committerKaz Kylheku <kaz@kylheku.com>2017-12-15 06:06:41 -0800
commit10600bbfbbc0a427369c8ea02eca9ac00f6019ac (patch)
tree40a6fa1dee943bd364a79a7abbccbfba5bb5491f /share
parent6b6bba24faf05a00e1f5e50df309a76348cf8c97 (diff)
downloadtxr-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.tl49
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])))