exprs)))
self)))))))
-(define $access
- (spar-transformer->runtime
- (delay
- (scons-rule
- `((+ symbol)
- any)
- (lambda (names expr)
- (fold-right (lambda (name expr)
- (scons-call keyword:access name expr))
- expr
- names))))))
-
(define-syntax $local-declare
(syntax-rules ()
((local-declare ((directive datum ...) ...) form0 form1+ ...)
\f
;;;; MIT-specific syntax
+(define $access
+ (spar-classifier->runtime
+ (delay
+ (spar-call-with-values
+ (lambda (ctx names env)
+ (fold-right (lambda (name env*)
+ (access-item ctx name env*))
+ env
+ names))
+ (spar-subform)
+ (spar-push spar-arg:ctx)
+ (spar-call-with-values list
+ (spar+ (spar-push-subform-if symbol? spar-arg:form)))
+ (spar-subform spar-push-classified)
+ (spar-match-null)))))
+
(define-record-type <access-item>
(access-item ctx name env)
access-item?
(name access-item-name)
(env access-item-env))
-(define keyword:access
- (spar-classifier->keyword
- (delay
- (spar-call-with-values access-item
- (spar-subform)
- (spar-push spar-arg:ctx)
- (spar-push-subform-if identifier? spar-arg:form)
- (spar-subform spar-push-classified)
- (spar-match-null)))))
-
(define-expr-item-compiler access-item?
(lambda (item)
(output/access-reference (access-item-name item)
(files "mit-syntax")
(parent (runtime syntax))
(export ()
+ (access $access)
(begin $begin)
(declare $declare)
(define-syntax $define-syntax)
(spar-macro-transformer $spar-macro-transformer)
(the-environment $the-environment))
(export (runtime mit-macros)
- keyword:access
keyword:define
keyword:let-syntax
keyword:unassigned
(files "mit-macros")
(parent (runtime))
(export ()
- (access $access)
(and $and)
(and-let* $and-let*)
(assert $assert)