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