macro-debugger: updates for submodules
original commit: f0c03ad921e63819901fd6c4658fa6735771eed5
This commit is contained in:
parent
175d3d8a64
commit
35149c39d6
|
@ -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)]
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)])
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user