Skip to content

Commit 6a8a269

Browse files
pnwamkrfindler
authored andcommitted
add with-atomic-rewriters
1 parent 4fbcfe2 commit 6a8a269

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed

redex-doc/redex/scribblings/ref/typesetting.scrbl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,11 @@ appears in a pattern.
10711071
]
10721072
}
10731073
1074+
@defform[(with-atomic-rewriters ([name-symbol string-or-thunk-returning-pict] ...)
1075+
expression)]{
1076+
Shorthand for nested @racket[with-atomic-rewriter] expressions.
1077+
@history[#:added "1.4"]}
1078+
10741079
@defform[(with-compound-rewriter name-symbol
10751080
proc
10761081
expression)]{

redex-pict-lib/redex/private/core-layout.rkt

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
with-compound-rewriter
5454
with-compound-rewriters
5555
with-atomic-rewriter
56+
with-atomic-rewriters
5657
STIX?
5758
white-bracket-sizing
5859
apply-rewrites
@@ -86,21 +87,26 @@
8687
(basic-text "\u22ef" (default-style))
8788
(basic-text "..." (default-style)))))
8889
(hole "[]"))))
89-
90-
(define-syntax (with-atomic-rewriter stx)
90+
91+
(define-syntax-rule
92+
(with-atomic-rewriter name rewriter body)
93+
(with-atomic-rewriters ([name rewriter]) body))
94+
(define-syntax (with-atomic-rewriters stx)
9195
(syntax-parse stx
92-
[(_ name transformer e:expr)
96+
[(_ ([name transformer] ...) e:expr)
9397
#:declare name
9498
(expr/c #'symbol?
9599
#:name "atomic-rewriter name")
96100
#:declare transformer
97101
(expr/c #'(or/c (-> pict?) string?)
98102
#:name "atomic-rewriter rewrite")
99-
#`(parameterize ([atomic-rewrite-table
100-
(cons (list name.c #,(wrap-expr/c #'(or/c string? (-> pict?))
101-
#'transformer.c))
102-
(atomic-rewrite-table))])
103-
e)]))
103+
(with-syntax ([(rewriter ...) (for/list ([t (in-list (syntax->list #'(transformer.c ...)))])
104+
(wrap-expr/c #'(or/c string? (-> pict?))
105+
t))])
106+
#`(parameterize ([atomic-rewrite-table
107+
(append (list (list name.c rewriter) ...)
108+
(atomic-rewrite-table))])
109+
e))]))
104110

105111
;; compound-rewrite-table : (listof lw) -> (listof (union lw pict string))
106112
(define compound-rewrite-table

redex-test/redex/tests/bitmap-test.rkt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,13 @@
309309
'subst subst-rw
310310
(render-metafunction subst)))
311311
"metafunction-subst.png")
312+
(btest (with-atomic-rewriters
313+
(['number "number"]
314+
['number "number"]) ;; these rewriters have no effect; here to test that path in the code
315+
(with-compound-rewriter
316+
'subst subst-rw
317+
(render-metafunction subst)))
318+
"metafunction-subst.png")
312319

313320

314321
;; make sure two metafunctions simultaneously rewritten line up properly

0 commit comments

Comments
 (0)