macro-debugger: updates for submodules

original commit: f0c03ad921e63819901fd6c4658fa6735771eed5
This commit is contained in:
Ryan Culpepper 2012-03-21 12:00:42 -06:00
parent 175d3d8a64
commit 35149c39d6
5 changed files with 51 additions and 10 deletions

View File

@ -123,8 +123,8 @@
(void)] (void)]
[(p:module z1 z2 rs ?1 locals tag rename check tag2 ?3 body shift) [(p:module z1 z2 rs ?1 locals tag rename check tag2 ?3 body shift)
(recur locals check body)] (recur locals check body)]
[(p:#%module-begin z1 z2 rs ?1 me body ?2) [(p:#%module-begin z1 z2 rs ?1 me body ?2 subs)
(recur body)] (recur body subs)]
[(p:define-syntaxes z1 z2 rs ?1 prep rhs locals) [(p:define-syntaxes z1 z2 rs ?1 prep rhs locals)
(recur prep locals) (recur prep locals)
(recur/phase-up rhs)] (recur/phase-up rhs)]
@ -164,6 +164,10 @@
(recur inners)] (recur inners)]
[(p:require _ _ _ _ locals) [(p:require _ _ _ _ locals)
(recur locals)] (recur locals)]
[(p:submodule _ _ _ _ exp)
(recur exp)]
[(p:submodule* _ _ _ _)
(void)]
[(p:#%stratified-body _ _ _ _ bderiv) [(p:#%stratified-body _ _ _ _ bderiv)
(recur bderiv)] (recur bderiv)]
[(p:stop _ _ _ _) (void)] [(p:stop _ _ _ _) (void)]

View File

@ -56,7 +56,7 @@
;; (make-p:#%module-begin <Base> Stx ModuleBegin/Phase ?exn) ;; (make-p:#%module-begin <Base> Stx ModuleBegin/Phase ?exn)
(define-struct (p:module prule) (prep tag rename check tag2 ?3 body shift) (define-struct (p:module prule) (prep tag rename check tag2 ?3 body shift)
#:transparent) #:transparent)
(define-struct (p:#%module-begin prule) (me body ?2) #:transparent) (define-struct (p:#%module-begin prule) (me body ?2 subs) #:transparent)
;; (make-p:define-syntaxes <Base> (listof LocalAction) DerivLL (listof LocalAction)) ;; (make-p:define-syntaxes <Base> (listof LocalAction) DerivLL (listof LocalAction))
;; (make-p:define-values <Base> Deriv) ;; (make-p:define-values <Base> Deriv)
@ -101,6 +101,9 @@
;; (make-p:require <Base> (listof LocalAction)) ;; (make-p:require <Base> (listof LocalAction))
(define-struct (p:require prule) (locals) #:transparent) (define-struct (p:require prule) (locals) #:transparent)
(define-struct (p:submodule prule) (exp) #:transparent)
(define-struct (p:submodule* prule) () #:transparent)
;; (make-p:#%stratified-body <Base> BDeriv) ;; (make-p:#%stratified-body <Base> BDeriv)
(define-struct (p:#%stratified-body prule) (bderiv) #:transparent) (define-struct (p:#%stratified-body prule) (bderiv) #:transparent)

View File

@ -30,7 +30,7 @@
(src-pos) (src-pos)
(tokens basic-empty-tokens basic-tokens prim-tokens renames-tokens) (tokens basic-empty-tokens basic-tokens prim-tokens renames-tokens)
(end EOF) (end EOF)
#|(debug "/tmp/ryan/DEBUG-PARSER.txt")|# #| (debug "/tmp/DEBUG-PARSER.txt") |#
(error deriv-error)) (error deriv-error))
;; tokens ;; tokens
@ -292,17 +292,23 @@
;; instead appear directly here ;; instead appear directly here
(Prim#%ModuleBegin (Prim#%ModuleBegin
(#:args e1 e2 rs) (#:args e1 e2 rs)
[(prim-#%module-begin ! rename-one (? ModuleBegin/Phase) (? Eval)) [(prim-#%module-begin ! rename-one (? ModuleBegin/Phase) (? Eval) next (? ExpandSubmodules))
(make p:#%module-begin e1 e2 rs $2 $3 $4 (make p:#%module-begin e1 e2 rs $2 $3 $4
(for/or ([la (in-list $5)]) (for/or ([la (in-list $5)])
(and (local-exn? la) (local-exn-exn la))))]) (and (local-exn? la) (local-exn-exn la)))
$7)])
#| #|
;; restore this version when expander fixed ;; restore this version when expander fixed
(Prim#%ModuleBegin-REAL (Prim#%ModuleBegin-REAL
(#:args e1 e2 rs) (#:args e1 e2 rs)
[(prim-#%module-begin ! rename-one (? ModuleBegin/Phase) !) [(prim-#%module-begin ! rename-one (? ModuleBegin/Phase) ! (? ExpandSubmodules))
(make p:#%module-begin e1 e2 rs $2 $3 $4 $5)]) (make p:#%module-begin e1 e2 rs $2 $3 $4 $5)])
|# |#
(ExpandSubmodules
(#:skipped null)
[(enter-prim (? PrimModule) exit-prim (? ExpandSubmodules))
(cons ($2 $1 $3 null) $4)]
[() null])
(ModuleBegin/Phase (ModuleBegin/Phase
[((? ModulePass1) next-group (? ModulePass2) next-group (? ModulePass3)) [((? ModulePass1) next-group (? ModulePass2) next-group (? ModulePass3))
@ -336,6 +342,10 @@
(make p:begin-for-syntax $1 $7 null $3 $4 $6 $7)] (make p:begin-for-syntax $1 $7 null $3 $4 $6 $7)]
[(enter-prim prim-require (? Eval) exit-prim) [(enter-prim prim-require (? Eval) exit-prim)
(make p:require $1 $4 null #f $3)] (make p:require $1 $4 null #f $3)]
[(enter-prim prim-submodule ! (? ExpandSubmodules #|one|#) exit-prim)
(make p:submodule $1 $5 null $3 (car $4))]
[(enter-prim prim-submodule* ! exit-prim)
(make p:submodule* $1 $4 null $3)]
[() [()
(make p:stop e1 e1 null #f)]) (make p:stop e1 e1 null #f)])

View File

@ -97,6 +97,7 @@
prim-varref prim-varref
prim-#%stratified-body prim-#%stratified-body
prim-begin-for-syntax prim-begin-for-syntax
prim-submodule prim-submodule*
)) ))
;; ** Signals to tokens ;; ** Signals to tokens
@ -194,7 +195,10 @@
(154 local-value-result ,token-local-value-result) (154 local-value-result ,token-local-value-result)
(155 prim-#%stratified-body) (155 prim-#%stratified-body)
(156 prim-begin-for-syntax) (156 prim-begin-for-syntax)
(157 prepare-env))) (157 prepare-env)
(158 prim-submodule)
(159 prim-submodule*)
))
(define (signal->symbol sig) (define (signal->symbol sig)
(if (symbol? sig) (if (symbol? sig)

View File

@ -97,13 +97,14 @@
[Expr ?body body] [Expr ?body body]
[#:pattern ?form] [#:pattern ?form]
[#:rename ?form shift])] [#:rename ?form shift])]
[(Wrap p:#%module-begin (e1 e2 rs ?1 me body ?2)) [(Wrap p:#%module-begin (e1 e2 rs ?1 me body ?2 subs))
(R [! ?1] (R [! ?1]
[#:pattern ?form] [#:pattern ?form]
[#:rename ?form me] [#:rename ?form me]
[#:pattern (?module-begin . ?forms)] [#:pattern (?module-begin . ?forms)]
[ModuleBegin/Phase ?forms body] [ModuleBegin/Phase ?forms body]
[! ?2])] [! ?2]
[Submodules ?forms subs])]
[(Wrap p:define-syntaxes (e1 e2 rs ?1 prep rhs locals)) [(Wrap p:define-syntaxes (e1 e2 rs ?1 prep rhs locals))
(R [! ?1] (R [! ?1]
[#:pattern ?form] [#:pattern ?form]
@ -252,6 +253,13 @@
[#:pattern ?form] [#:pattern ?form]
[#:walk e2 'macro])] [#:walk e2 'macro])]
[(Wrap p:submodule* (e1 e2 rs ?1))
(R [! ?1])]
[(Wrap p:submodule (e1 e2 rs ?1 exp))
(R [! ?1]
[#:pattern ?form]
[Expr ?form exp])]
[(Wrap p:stop (e1 e2 rs ?1)) [(Wrap p:stop (e1 e2 rs ?1))
(R [! ?1])] (R [! ?1])]
@ -501,6 +509,18 @@
[#f [#f
(R)])) (R)]))
(define (Submodules subs)
(match subs
['()
(R)]
[(cons sub rest)
(R [#:pattern ?form]
[#:new-local-context
[#:pattern ?form]
[#:set-syntax (wderiv-e1 sub)]
[Expr ?form sub]]
[Submodules ?form rest])]))
;; List : ListDerivation -> RST ;; List : ListDerivation -> RST
(define (List ld) (define (List ld)
(match ld (match ld