Added (base-expander)

This commit is contained in:
Justin Ethier 2017-02-04 00:10:20 -05:00
parent e41586da69
commit eef7892d14

View file

@ -288,14 +288,15 @@
;; - imports
;; - remaining program
(define (import-reduction expr)
;; TODO: consolidate this with other macro loading code
(define rename-env (env:extend-environment '() '() '()))
(let ((macros (filter
(lambda (v)
(Cyc-macro? (Cyc-get-cvar (cdr v))))
(Cyc-global-vars))))
(macro:load-env! macros (create-environment '() '())))
;;
; ;; TODO: consolidate this with other macro loading code
; (define rename-env (env:extend-environment '() '() '()))
; (let ((macros (filter
; (lambda (v)
; (Cyc-macro? (Cyc-get-cvar (cdr v))))
; (Cyc-global-vars))))
; (macro:load-env! macros (create-environment '() '())))
; ;;
(define expander (base-expander))
(let ((results
(foldl
(lambda (ex accum)
@ -307,7 +308,7 @@
(cons (car accum) (cons e (cdr accum))))))
(cond
((tagged-list? 'cond-expand ex)
(let ((ex* (expand ex (macro:get-env) rename-env)))
(let ((ex* (expander ex))) ;(expand ex (macro:get-env) rename-env)))
;(trace:info `(DEBUG ,ex* ,ex))
(if (tagged-list? 'import ex*)
(process ex*)
@ -320,6 +321,19 @@
(apply append (reverse (car results)))
(reverse (cdr results)))))
;; Return a function to expand any built-in macros
;; NOTE: since this uses a global macro env, it will be overridden later on when
;; macros are loaded from dependent libraries.
(define (base-expander)
(let ((rename-env (env:extend-environment '() '() '()))
(macros (filter
(lambda (v)
(Cyc-macro? (Cyc-get-cvar (cdr v))))
(Cyc-global-vars))))
(macro:load-env! macros (create-environment '() '()))
(lambda (ex)
(expand ex (macro:get-env) rename-env))))
;; TODO: longer-term, will be used to find where cyclone's data is installed
(define (get-data-path)
".")