Add new functions to evaluator.
This commit is contained in:
parent
97dba9b99a
commit
7da97dca3c
|
@ -1,11 +1,22 @@
|
||||||
#lang racket/base
|
#lang racket/base
|
||||||
;; Allow evaluation at phase1
|
;; Allow evaluation at phase1
|
||||||
(require (for-syntax racket/base syntax/parse))
|
(require (for-syntax racket/base syntax/parse))
|
||||||
(provide phase1-eval)
|
(provide phase1-eval phase1-phase0-eval phase1-phase0-run)
|
||||||
|
|
||||||
(define-namespace-anchor anchor)
|
(define-namespace-anchor anchor)
|
||||||
(define namespace (namespace-anchor->empty-namespace anchor))
|
(define namespace (namespace-anchor->empty-namespace anchor))
|
||||||
|
|
||||||
|
(define-syntax phase1-phase0-run
|
||||||
|
(syntax-parser
|
||||||
|
[(_ form:expr ...)
|
||||||
|
#'(let-syntax ([go (lambda (stx) form ...)]) (go))]))
|
||||||
|
|
||||||
|
(define-syntax phase1-phase0-eval
|
||||||
|
(syntax-parser
|
||||||
|
[(_ form:expr ...)
|
||||||
|
#'(eval-syntax (quote-syntax (phase1-phase0-run form ...)) namespace)]))
|
||||||
|
|
||||||
(define-syntax phase1-eval
|
(define-syntax phase1-eval
|
||||||
(syntax-parser
|
(syntax-parser
|
||||||
[(_ form:expr ...)
|
[(_ form:expr ...)
|
||||||
#'(eval-syntax (quote-syntax (begin-for-syntax form ...)) namespace)]))
|
#'(phase1-phase0-eval form ... #'(void))]))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user