From 6886f6540a5f3521128f5446effcd88d00a07e6d Mon Sep 17 00:00:00 2001 From: Casey Klein Date: Wed, 31 Mar 2010 01:03:25 +0000 Subject: [PATCH] Fixes handling of where/hidden and side-condition/hidden clauses in reduction-relation. svn: r18683 --- collects/redex/private/pict.ss | 5 +-- collects/redex/private/reduction-semantics.ss | 39 ++++++++--------- collects/redex/redex.scrbl | 40 ++++++++---------- collects/redex/tests/bitmap-test.ss | 16 +++++++ .../metafunction-Name-vertical.png | Bin 4823 -> 4744 bytes .../tests/bmps-macosx/metafunction-Name.png | Bin 4440 -> 4437 bytes .../tests/bmps-macosx/metafunction-T.png | Bin 4705 -> 4700 bytes .../bmps-macosx/metafunctions-multiple.png | Bin 9319 -> 9314 bytes .../redex/tests/bmps-macosx/mf-hidden.png | Bin 0 -> 1622 bytes .../redex/tests/bmps-macosx/rr-hidden.png | Bin 0 -> 394 bytes .../redex/tests/bmps-macosx/var-not-in.png | Bin 5086 -> 5086 bytes 11 files changed, 53 insertions(+), 47 deletions(-) create mode 100644 collects/redex/tests/bmps-macosx/mf-hidden.png create mode 100644 collects/redex/tests/bmps-macosx/rr-hidden.png diff --git a/collects/redex/private/pict.ss b/collects/redex/private/pict.ss index 5614499d40..234479f153 100644 --- a/collects/redex/private/pict.ss +++ b/collects/redex/private/pict.ss @@ -792,10 +792,7 @@ (* 2 sep))))) lhss rhss linebreak-list))] [scs (map (lambda (eqn) - (let ([scs (filter (lambda (v) - (not (or (metafunc-extra-side-cond/hidden? v) - (metafunc-extra-where/hidden? v)))) - (reverse (list-ref eqn 1)))]) + (let ([scs (reverse (list-ref eqn 1))]) (if (null? scs) #f (let-values ([(fresh where/sc) (partition metafunc-extra-fresh? scs)]) diff --git a/collects/redex/private/reduction-semantics.ss b/collects/redex/private/reduction-semantics.ss index 38c6f72a5d..d17da17341 100644 --- a/collects/redex/private/reduction-semantics.ss +++ b/collects/redex/private/reduction-semantics.ss @@ -406,7 +406,9 @@ (cond [(null? stuffs) (values label (reverse scs/withs) (reverse fvars))] [else - (syntax-case (car stuffs) (fresh variable-not-in) + (syntax-case (car stuffs) (where where/hidden + side-condition side-condition/hidden + fresh variable-not-in) [(fresh xs ...) (loop (cdr stuffs) label @@ -433,21 +435,21 @@ #'y)]))) (syntax->list #'(xs ...)))) fvars))] - [(-where x e) - (or (free-identifier=? #'-where #'where) - (free-identifier=? #'-where #'where/hidden)) + [(where x e) (loop (cdr stuffs) label (cons #`(cons #,(to-lw/proc #'x) #,(to-lw/proc #'e)) scs/withs) fvars)] - [(-side-condition sc) - (or (free-identifier=? #'-side-condition #'side-condition) - (free-identifier=? #'-side-condition #'side-condition/hidden)) + [(where/hidden x e) + (loop (cdr stuffs) label scs/withs fvars)] + [(side-condition sc) (loop (cdr stuffs) label (cons (to-lw/uq/proc #'sc) scs/withs) fvars)] + [(side-condition/hidden sc) + (loop (cdr stuffs) label scs/withs fvars)] [x (identifier? #'x) (loop (cdr stuffs) @@ -1051,9 +1053,7 @@ ;; Intermediate structures recording clause "extras" for typesetting. (define-struct metafunc-extra-side-cond (expr)) -(define-struct (metafunc-extra-side-cond/hidden metafunc-extra-side-cond) ()) (define-struct metafunc-extra-where (lhs rhs)) -(define-struct (metafunc-extra-where/hidden metafunc-extra-where) ()) (define-struct metafunc-extra-fresh (vars)) (define-syntax (in-domain? stx) @@ -1289,9 +1289,7 @@ (map (λ (hm) (map (λ (lst) - (syntax-case lst (unquote - side-condition where - side-condition/hidden where/hidden) + (syntax-case lst (unquote side-condition where) [(where pat (unquote (f _ _))) (and (or (identifier? #'pat) (andmap identifier? (syntax->list #'pat))) @@ -1307,16 +1305,17 @@ [(where pat exp) #`(make-metafunc-extra-where #,(to-lw/proc #'pat) #,(to-lw/proc #'exp))] - [(where/hidden pat exp) - #`(make-metafunc-extra-where/hidden - #,(to-lw/proc #'pat) #,(to-lw/proc #'exp))] [(side-condition x) #`(make-metafunc-extra-side-cond - #,(to-lw/uq/proc #'x))] - [(side-condition/hidden x) - #`(make-metafunc-extra-side-cond/hidden #,(to-lw/uq/proc #'x))])) - (reverse (syntax->list hm)))) + (reverse + (filter (λ (lst) + (syntax-case lst (where/hidden + side-condition/hidden) + [(where/hidden pat exp) #f] + [(side-condition/hidden x) #f] + [_ #t])) + (syntax->list hm))))) (syntax->list #'(... seq-of-tl-side-cond/binds)))] [(((rhs-bind-id/lw . rhs-bind-pat/lw/uq) ...) ...) @@ -2185,9 +2184,7 @@ (struct-out metafunc-case) (struct-out metafunc-extra-side-cond) - (struct-out metafunc-extra-side-cond/hidden) (struct-out metafunc-extra-where) - (struct-out metafunc-extra-where/hidden) (struct-out metafunc-extra-fresh) (struct-out binds)) diff --git a/collects/redex/redex.scrbl b/collects/redex/redex.scrbl index 5607b322df..5ccef04d8d 100644 --- a/collects/redex/redex.scrbl +++ b/collects/redex/redex.scrbl @@ -682,7 +682,9 @@ all non-GUI portions of Redex) and also exported by [extras name (fresh fresh-clause ...) (side-condition scheme-expression) - (where tl-pat @#,tttterm)] + (where tl-pat @#,tttterm) + (side-condition/hidden scheme-expression) + (where/hidden tl-pat @#,tttterm)] [fresh-clause var ((var1 ...) (var2 ...))] [tl-pat identifier (tl-pat-ele ...)] [tl-pat-ele tl-pat (code:line tl-pat ... (code:comment "a literal ellipsis"))])]{ @@ -717,15 +719,22 @@ a sequence of variables. The variable @scheme[var2] is used to determine the number of variables generated and @scheme[var2] must be bound by the left-hand side of the rule. -The side-conditions are expected to all hold, and have the -format of the second argument to the @pattech[side-condition] pattern, -described above. +All side-conditions provided with @scheme[side-condition] and +@scheme[hidden-side-condition] are collected with @scheme[and] and +used as guards on the case being matched. The argument to each +side-condition should be a Scheme expression, and the pattern +variables in the @|ttpattern| are bound in that expression. A +@scheme[side-condition/hidden] form is the same as +@scheme[side-condition], except that the side condition is not +rendered when typesetting via @schememodname[redex/pict]. Each @scheme[where] clause acts as a side condition requiring a successful pattern match, and it can bind pattern variables in the side-conditions (and @scheme[where] clauses) that follow and in the -reduction result. The bindings are the same as bindings in a -@scheme[term-let] expression. +metafunction result. The bindings are the same as bindings in a +@scheme[term-let] expression. A @scheme[where/hidden] clause is the +same as a @scheme[where] clause, but the clause is not +rendered when typesetting via @schememodname[redex/pict]. As an example, this @@ -905,22 +914,9 @@ expressions. The first argument indicates the language used to resolve non-terminals in the pattern expressions. Each of the rhs-expressions is implicitly wrapped in @|tttterm|. -All side-conditions provided with @scheme[side-condition] and -@scheme[hidden-side-condition] are collected with @scheme[and] and -used as guards on the case being matched. The argument to each -side-condition should be a Scheme expression, and the pattern -variables in the @|ttpattern| are bound in that expression. A -@scheme[side-condition/hidden] form is the same as -@scheme[side-condition], except that the side condition is not -rendered when typesetting via @schememodname[redex/pict]. - -Each @scheme[where] clause acts as a side condition requiring a -successful pattern match, and it can bind pattern variables in the -side-conditions (and @scheme[where] clauses) that follow and in the -metafunction result. The bindings are the same as bindings in a -@scheme[term-let] expression. A @scheme[where/hidden] clause is the -same as a @scheme[where] clause, but the clause is not -rendered when typesetting via @schememodname[redex/pict]. +The @scheme[side-condition], @scheme[hidden-side-condition], +@scheme[where], and @scheme[where/hidden] clauses behave as +in the @scheme[reduction-relation] form. Raises an exception recognized by @scheme[exn:fail:redex?] if no clauses match, if one of the clauses matches multiple ways diff --git a/collects/redex/tests/bitmap-test.ss b/collects/redex/tests/bitmap-test.ss index 9bc12d9697..350708f8c8 100644 --- a/collects/redex/tests/bitmap-test.ss +++ b/collects/redex/tests/bitmap-test.ss @@ -178,5 +178,21 @@ (where x ,(variable-not-in 'y 'x))]) (test (render-metafunction g) "var-not-in-rebound.png")) +;; hidden `where' and `side-condition' clauses +(define-metafunction lang + [(mf-hidden 1) + 2 + (where/hidden number 7) + (side-condition/hidden (= 1 2))]) +(test (render-metafunction mf-hidden) "mf-hidden.png") +(test (render-reduction-relation + (reduction-relation + lang + (--> 1 + 2 + (where/hidden number 7) + (side-condition/hidden (= 1 2))))) + "rr-hidden.png") + (printf "bitmap-test.ss: ") (done) diff --git a/collects/redex/tests/bmps-macosx/metafunction-Name-vertical.png b/collects/redex/tests/bmps-macosx/metafunction-Name-vertical.png index 631aa05f6d046212897bbdfc96ffbae590c03971..32fe0babfcdd86b90e7a48514df0940a2ac1fb20 100644 GIT binary patch literal 4744 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 Kg{+W&9{xYJ4^3DA diff --git a/collects/redex/tests/bmps-macosx/metafunction-Name.png b/collects/redex/tests/bmps-macosx/metafunction-Name.png index e4f7dc5331411cc3d70ad2ac520c16b4fd70e938..58452d8229e8b32380b071d0d2043c69b644fa82 100644 GIT binary patch literal 4437 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 H*2Dh+uluN& literal 4440 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 G;r{`2*`}QU diff --git a/collects/redex/tests/bmps-macosx/metafunction-T.png b/collects/redex/tests/bmps-macosx/metafunction-T.png index 23606d0bd557bf61c3efc56bcf6a8d00c535c1b6..a9d5a093b69982f9ed2749fcf1a5cdab64a0c4c6 100644 GIT binary patch delta 4678 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 delta 4683 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 diff --git a/collects/redex/tests/bmps-macosx/metafunctions-multiple.png b/collects/redex/tests/bmps-macosx/metafunctions-multiple.png index 84b93559ce224c7d523af16043f399c169936ad1..3b40817a406418496066ead288c88085ce662e49 100644 GIT binary patch delta 4312 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 P7#Ie+COQ=tu~Gj61Hp*9 delta 4341 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 diff --git a/collects/redex/tests/bmps-macosx/mf-hidden.png b/collects/redex/tests/bmps-macosx/mf-hidden.png new file mode 100644 index 0000000000000000000000000000000000000000..8545f0f19bf47b9a01949e5a375068ff1924acb5 GIT binary patch literal 1622 zcmV-c2C4apP)kj2t=%eD#A?d`*f_di~j&D;O?>G%BJ=RD_}=bSy~oY4q^ zfarkZxL7O>R|tY|xm+9$hfb$c^ofZH48v$NTDTqv1pIzKo6V*~_IkZ^Iz1*PCd!dS z34$Pk!61XdSlF->cs!o}W<*2*v)L?@$uJC~=ytmu0B{_SsGH4ZivH}`Gm%I%J$^|^ z$(b`}q8SMV3WcJywDif7Cm9(ThJ|JC(+v4IzB$`bULG4E)Iv&+}zCP^XIbG zvqW)m@qq&e7z_p?%a<<)fU&VLnM^h`G(@_krKOdXmF?KEgU{z9LPY(ej0lUxVzF2{ zIy$UY>&VE+_3PIGfbMiU6$-`Mw{MGzijtF)bvm8hZZ9k>Oh`yjsZ?IC_wnP$H*el_ zxm^49?TZ+`Fz)|U30tL05Cc_s#dEvY}imzQev~&$X2gk zzs}0aN=;4G>2#q`h}5lCE9!mEo;@8M9Z1w_wM|V;<>lpKu~;sbx3{;?Jk_|kI7(3> zK^7lM6`Cz@9KU$+BAd+?2m}WY9(?oW4FJ$5CnpUC!;vFL6bgk(rK+i^NlQyxzkdCt zOPAigdw1o^m2KO$?b@}A&*z^waUx>eQ>RYt+_|&5y1J*Q=j_?D01yZS+S}WGK3^yl z%E`$w8jYtFet&C@8=%tfHc#rKRQR)2B#xI2;)n831tW)-AbQo|~I% zGMNBiXlO{I(M(KCT)ldAYHCWQQq3n33xd47yd_JPAkOFWv$C=P;7^6FuC6XCD+7Q> zj~)qy!n(RT05BK~{r&wHE?kgEBwxOKDJUq27+0s$9X@;*0LI3~T3cJgKfQeUa&T}E z$8nKJq|s;`4#(i&AOO_W)up7Qyn6Kt0F+84hr>bs_4V~E7VG)*=QJ8^@7}!w0|U2j z-`>7`I{;*6X6p5N0FX!|8#ivW*=&nZNxHkcl}aT=+`M@++IoLOS63HW;6K^ix^*ie zD^{%7y?Zy}91drAcsRV7+wIQJ&qutbrba520zi6tI#PH%-uLg{!~Km$V`5^WNF+jL zc6K((rqO6DEG$IgvSrKUayjBAlPNAP?(*f!$n^XDA3uIX9OV=M;^X51V03hJF|wJO zn%dUZMiG}TT{=S(o6Qyo1hTWUfy^e0#Uek?a8qG2nOnAOL7d!Bv9Ym;Os_<4w_6|( zkmjmYt7g`nPA5SSBO@coOiD`P@py=17#1FRo@dD45EBz4kw~KV4+ev^wY4{H+(72+ z?qVz!tD&KRG$}iAI)p;u{rmT)rl!!Pud}n0)Zf2 zRiOeuTLgo_Ikbw8k3V+o7)3<4uIadY_pVGPi;azSyWQWueH$JgUfgVo#bUi)uhD4E zpFjWe=g*3YipIu9062Q|Xm@vaQc@C^%U!#6ty--{{z|3NXf)>L=5o1QkH@3cYPDMJ z9Qyt7;|JPJjg5^bPo7LjNQkl_m&=`g3PnUqON&OMA=iw-VAyQ7sNO>Jgxl@z?d|pZ z{S+O?@lT&Vg+d{U?r=B^27}#h|7T={Lh<6oi*PbCii?ZU6Nn@Wi>Tg0^8}mCPESv# z93ucA5{Wi#+BE&_TDfv%W@hG^HEW^?-qqFh`Sa&cD1=BL5QymJa=9!P3y$MHpAV5a zOyr-S5sPy;{y#9A&A)#A0stnHIXO8A08*)R`mzCl&1OUY9*~|wp>Xx;)eAeG-zQ3j UeS4BrtN;K207*qoM6N<$f}Fz{*Z=?k literal 0 HcmV?d00001 diff --git a/collects/redex/tests/bmps-macosx/rr-hidden.png b/collects/redex/tests/bmps-macosx/rr-hidden.png new file mode 100644 index 0000000000000000000000000000000000000000..46e14cf70397c41c828ae06d48432c0ef290fe3d GIT binary patch literal 394 zcmV;50d@X~P)HEGAB93Dk>nN_ON(d1}5t$VLH~_3x zD^*pWdoE*aD&n_D&-G0pB4g|g;#poO9)kWU?xoH1IB!e#eku7<@#B}W+&3|%y6^kn zp1Xtx*OdUEu4~tI0pNH%=6U`UJcez}K@%?@$5K92yd7cnLQIzZT8by)s`xL1T of4-7&x-}DX;4gdfE07*qoM6N<$f>_b7d;kCd literal 0 HcmV?d00001 diff --git a/collects/redex/tests/bmps-macosx/var-not-in.png b/collects/redex/tests/bmps-macosx/var-not-in.png index e6efc40fecc0b31e9d3bdabe7c23b99ec26b28e7..0b27baf53813efe057991c7bc89f91a0ce69bf4b 100644 GIT binary patch literal 5086 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