diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-12-20 04:00:22 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-12-20 04:00:22 -0800 |
commit | 7c5b70d7d17faf6543350dffe56292e3f7dff679 (patch) | |
tree | 522550ef5e10d87961191dad88e4c6c2c10dac4d /share | |
parent | 59ddd76e362196ac68ab291b9a76a55fd257d29c (diff) | |
download | txr-7c5b70d7d17faf6543350dffe56292e3f7dff679.tar.gz txr-7c5b70d7d17faf6543350dffe56292e3f7dff679.tar.bz2 txr-7c5b70d7d17faf6543350dffe56292e3f7dff679.zip |
awk macro: endpont-exclusive ranges.
* share/txr/stdlib/awk.tl (sys:awk-mac-let): Local macro
sys:rng generalized to support code generation for ranges that
exclude either endpoint. Local rng macro adjusted to target
this new form. Local macros rng-, -rng, and -rng- added.
* txr.1: Documented.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/awk.tl | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl index b6f26c01..1e53d37f 100644 --- a/share/txr/stdlib/awk.tl +++ b/share/txr/stdlib/awk.tl @@ -255,7 +255,7 @@ (ors (qref ,aws-sym ors))) (macrolet ((next () '(return-from :awk-rec)) (next-file () '(return-from :awk-file)) - (sys:rng (from-expr to-expr :env e) + (sys:rng (style from-expr to-expr :env e) (let ((ix (pinc (qref ,awc nranges))) (rng-temp (gensym)) (from-expr-ex (sys:expand from-expr e)) @@ -269,11 +269,28 @@ (set ,flag-new t)) (when (and ,flag-new ,to-expr-ex) (set ,flag-new nil)) - (or (set flag ,flag-new) ,flag-old))) + ,*(caseq style + (rng ^((or (set flag ,flag-new) ,flag-old))) + (-rng- ^((and (set flag ,flag-new) ,flag-old))) + (rng- ^((set flag ,flag-new))) + (-rng ^((set flag ,flag-new) ,flag-old))))) (qref ,awc rng-exprs)) rng-temp)) (rng (from-expr to-expr) - ^(sys:rng (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) + ^(sys:rng rng + (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) + (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) + (-rng (from-expr to-expr) + ^(sys:rng -rng + (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) + (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) + (rng- (from-expr to-expr) + ^(sys:rng rng- + (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) + (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) + (-rng- (from-expr to-expr) + ^(sys:rng -rng- + (sys:awk-test ,from-expr ,(qref ,awc rng-rec-temp)) (sys:awk-test ,to-expr ,(qref ,awc rng-rec-temp)))) (ff (. opip-args) ^(symacrolet ((f (rslot ,',aws-sym 'fields 'f-to-rec))) |