From 6a2cf5ffa33c96ad3ad55bf3ef5b9cc0e178c91f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 15 Dec 2017 06:06:41 -0800 Subject: 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. --- share/txr/stdlib/awk.tl | 49 +++++++++++++------------------------------------ 1 file 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]))) -- cgit v1.2.3