371.2
svn: r7263 original commit: e4cbc4e6a938fd5bd90aab305ca39d61e7eae151
This commit is contained in:
parent
78a294d8ee
commit
417ce18ff4
|
@ -57,8 +57,8 @@
|
||||||
;; Entry point
|
;; Entry point
|
||||||
(productions
|
(productions
|
||||||
(Expansion
|
(Expansion
|
||||||
[(EE/Lifts) $1]
|
[(start EE/Lifts) $2]
|
||||||
[(EE/Lifts/Interrupted) $1]))
|
[(start EE/Lifts/Interrupted) $2]))
|
||||||
|
|
||||||
(productions/I
|
(productions/I
|
||||||
|
|
||||||
|
@ -106,7 +106,10 @@
|
||||||
|
|
||||||
;; Evaluation
|
;; Evaluation
|
||||||
(Eval
|
(Eval
|
||||||
[() #f])
|
(#:no-wrap)
|
||||||
|
[() #f]
|
||||||
|
[(start (? EE) (? Eval)) #f]
|
||||||
|
[(start (? CheckImmediateMacro) (? Eval)) #f])
|
||||||
|
|
||||||
;; Expansion of an expression to primitive form
|
;; Expansion of an expression to primitive form
|
||||||
;; CheckImmediateMacro Answer = Derivation (I)
|
;; CheckImmediateMacro Answer = Derivation (I)
|
||||||
|
@ -150,18 +153,19 @@
|
||||||
(#:no-wrap)
|
(#:no-wrap)
|
||||||
(#:skipped null)
|
(#:skipped null)
|
||||||
[() null]
|
[() null]
|
||||||
[((? LocalAction) (? LocalActions)) (cons $1 $2)])
|
[((? LocalAction) (? LocalActions)) (cons $1 $2)]
|
||||||
|
[((? NotReallyLocalAction) (? LocalActions)) $2])
|
||||||
|
|
||||||
(LocalAction
|
(LocalAction
|
||||||
(#:no-wrap)
|
(#:no-wrap)
|
||||||
[(enter-local local-pre (? EE) local-post exit-local)
|
[(enter-local local-pre start (? EE) local-post exit-local)
|
||||||
(make-local-expansion $1 $5 $2 $4 #f $3)]
|
(make-local-expansion $1 $6 $2 $5 #f $4)]
|
||||||
[(enter-local phase-up local-pre (? EE) local-post exit-local)
|
[(enter-local phase-up local-pre start (? EE) local-post exit-local)
|
||||||
(make-local-expansion $1 $6 $3 $5 #t $4)]
|
(make-local-expansion $1 $7 $3 $6 #t $5)]
|
||||||
[(enter-local/expr local-pre (? EE) local-post exit-local/expr)
|
[(enter-local/expr local-pre start (? EE) local-post exit-local/expr)
|
||||||
(make-local-expansion/expr $1 (car $5) $2 $4 #f (cdr $5) $3)]
|
(make-local-expansion/expr $1 (car $6) $2 $5 #f (cdr $6) $4)]
|
||||||
[(enter-local/expr local-pre phase-up (? EE) local-post exit-local/expr)
|
[(enter-local/expr local-pre phase-up start (? EE) local-post exit-local/expr)
|
||||||
(make-local-expansion/expr $1 (car $6) $3 $5 #t (cdr $6) $4)]
|
(make-local-expansion/expr $1 (car $7) $3 $6 #t (cdr $7) $5)]
|
||||||
[(lift)
|
[(lift)
|
||||||
(make-local-lift (cdr $1) (car $1))]
|
(make-local-lift (cdr $1) (car $1))]
|
||||||
[(lift-statement)
|
[(lift-statement)
|
||||||
|
@ -169,6 +173,17 @@
|
||||||
[(phase-up (? EE/LetLifts))
|
[(phase-up (? EE/LetLifts))
|
||||||
(make-local-bind $2)])
|
(make-local-bind $2)])
|
||||||
|
|
||||||
|
(NotReallyLocalAction
|
||||||
|
(#:no-wrap)
|
||||||
|
;; called 'expand' (not 'local-expand') within transformer
|
||||||
|
[(start (? EE))
|
||||||
|
(make-local-expansion (lift/deriv-e1 $2)
|
||||||
|
(lift/deriv-e2 $2)
|
||||||
|
(lift/deriv-e1 $2)
|
||||||
|
(lift/deriv-e2 $2)
|
||||||
|
#f
|
||||||
|
$2)])
|
||||||
|
|
||||||
;; Multiple calls to local-expand
|
;; Multiple calls to local-expand
|
||||||
;; EEs Answer = (listof Derivation)
|
;; EEs Answer = (listof Derivation)
|
||||||
(EEs
|
(EEs
|
||||||
|
@ -245,8 +260,8 @@
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
;; Multiple forms after language
|
;; Multiple forms after language
|
||||||
;; #%module-begin tagging done automatically
|
;; #%module-begin tagging done automatically
|
||||||
[(prim-module ! (? EE 'body))
|
[(prim-module ! (? Eval) (? EE 'body))
|
||||||
(make-p:module e1 e2 rs #f $3)]
|
(make-p:module e1 e2 rs #f $4)]
|
||||||
|
|
||||||
;; One form after language ... macro that expands into #%module-begin
|
;; One form after language ... macro that expands into #%module-begin
|
||||||
[(prim-module NoError next
|
[(prim-module NoError next
|
||||||
|
@ -287,14 +302,14 @@
|
||||||
(ModulePass1/Prim
|
(ModulePass1/Prim
|
||||||
[(enter-prim prim-define-values ! exit-prim)
|
[(enter-prim prim-define-values ! exit-prim)
|
||||||
(make-p:define-values $1 $4 null #f)]
|
(make-p:define-values $1 $4 null #f)]
|
||||||
[(enter-prim prim-define-syntaxes ! phase-up (? EE/LetLifts) exit-prim)
|
[(enter-prim prim-define-syntaxes ! phase-up (? EE/LetLifts) (? Eval) exit-prim)
|
||||||
(make-p:define-syntaxes $1 $6 null $5)]
|
(make-p:define-syntaxes $1 $7 null $5)]
|
||||||
[(enter-prim prim-require ! exit-prim)
|
[(enter-prim prim-require ! (? Eval) exit-prim)
|
||||||
(make-p:require $1 $4 null)]
|
(make-p:require $1 $5 null)]
|
||||||
[(enter-prim prim-require-for-syntax ! exit-prim)
|
[(enter-prim prim-require-for-syntax ! (? Eval) exit-prim)
|
||||||
(make-p:require-for-syntax $1 $4 null)]
|
(make-p:require-for-syntax $1 $5 null)]
|
||||||
[(enter-prim prim-require-for-template ! exit-prim)
|
[(enter-prim prim-require-for-template ! (? Eval) exit-prim)
|
||||||
(make-p:require-for-template $1 $4 null)]
|
(make-p:require-for-template $1 $5 null)]
|
||||||
[(enter-prim prim-provide ! exit-prim)
|
[(enter-prim prim-provide ! exit-prim)
|
||||||
(make-p:provide $1 $4 null)]
|
(make-p:provide $1 $4 null)]
|
||||||
[()
|
[()
|
||||||
|
@ -324,7 +339,7 @@
|
||||||
;; Definitions
|
;; Definitions
|
||||||
(PrimDefineSyntaxes
|
(PrimDefineSyntaxes
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
[(prim-define-syntaxes ! (? EE/LetLifts))
|
[(prim-define-syntaxes ! (? EE/LetLifts) (? Eval))
|
||||||
(make-p:define-syntaxes e1 e2 rs $3)])
|
(make-p:define-syntaxes e1 e2 rs $3)])
|
||||||
|
|
||||||
(PrimDefineValues
|
(PrimDefineValues
|
||||||
|
@ -439,15 +454,18 @@
|
||||||
|
|
||||||
(PrimRequire
|
(PrimRequire
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
[(prim-require !) (make-p:require e1 e2 rs)])
|
[(prim-require ! (? Eval))
|
||||||
|
(make-p:require e1 e2 rs)])
|
||||||
|
|
||||||
(PrimRequireForSyntax
|
(PrimRequireForSyntax
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
[(prim-require-for-syntax !) (make-p:require-for-syntax e1 e2 rs)])
|
[(prim-require-for-syntax ! (? Eval))
|
||||||
|
(make-p:require-for-syntax e1 e2 rs)])
|
||||||
|
|
||||||
(PrimRequireForTemplate
|
(PrimRequireForTemplate
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
[(prim-require-for-template !) (make-p:require-for-template e1 e2 rs)])
|
[(prim-require-for-template ! (? Eval))
|
||||||
|
(make-p:require-for-template e1 e2 rs)])
|
||||||
|
|
||||||
(PrimProvide
|
(PrimProvide
|
||||||
(#:args e1 e2 rs)
|
(#:args e1 e2 rs)
|
||||||
|
@ -500,7 +518,7 @@
|
||||||
|
|
||||||
;; BindSyntaxes Answer = Derivation
|
;; BindSyntaxes Answer = Derivation
|
||||||
(BindSyntaxes
|
(BindSyntaxes
|
||||||
[(phase-up (? EE/LetLifts) ! Eval) $2])
|
[(phase-up (? EE/LetLifts) ! (? Eval)) $2])
|
||||||
|
|
||||||
;; NextBindSyntaxess Answer = (list-of Derivation)
|
;; NextBindSyntaxess Answer = (list-of Derivation)
|
||||||
(NextBindSyntaxess
|
(NextBindSyntaxess
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
(provide (all-defined))
|
(provide (all-defined))
|
||||||
|
|
||||||
(define-tokens basic-tokens
|
(define-tokens basic-tokens
|
||||||
(visit ; syntax
|
(start ; .
|
||||||
|
visit ; syntax
|
||||||
resolve ; identifier
|
resolve ; identifier
|
||||||
next ; .
|
next ; .
|
||||||
next-group ; .
|
next-group ; .
|
||||||
|
@ -138,6 +139,7 @@
|
||||||
(138 . prim-expression)
|
(138 . prim-expression)
|
||||||
(139 . ,token-enter-local/expr)
|
(139 . ,token-enter-local/expr)
|
||||||
(140 . ,token-exit-local/expr)
|
(140 . ,token-exit-local/expr)
|
||||||
|
(141 . ,token-start)
|
||||||
))
|
))
|
||||||
|
|
||||||
(define (tokenize sig-n val pos)
|
(define (tokenize sig-n val pos)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user