summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-12-20 04:00:22 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-12-20 04:00:22 -0800
commit7c5b70d7d17faf6543350dffe56292e3f7dff679 (patch)
tree522550ef5e10d87961191dad88e4c6c2c10dac4d /share
parent59ddd76e362196ac68ab291b9a76a55fd257d29c (diff)
downloadtxr-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.tl23
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)))