WIP - create top-level macro env

This commit is contained in:
Justin Ethier 2015-08-27 22:59:37 -04:00
parent 2c9cf5009a
commit c887cfe04b
2 changed files with 25 additions and 14 deletions

View file

@ -102,16 +102,16 @@
;; JAE DEBUG code, remove (or refactor) once working
(trace:info "JAE DEBUG - compiled macros")
(trace:info
(filter
(lambda (v)
(cond
((equal? (car v) 'my-or)
(trace:info (list 'my-or (car v) (cdr v) (macro? (Cyc-get-cvar (cdr v)))))
#t)
(else #f)))
;(macro? (cdr v)))
(Cyc-global-vars)))
;(trace:info
; (filter
; (lambda (v)
; (cond
; ((equal? (car v) 'my-or)
; (trace:info (list 'my-or (car v) (cdr v) (macro? (Cyc-get-cvar (cdr v)))))
; #t)
; (else #f)))
; ;(macro? (cdr v)))
; (Cyc-global-vars)))
; TODO: should be able to use this to find all the compiled macros
(let ((macros (filter
(lambda (v)
@ -119,14 +119,12 @@
(Cyc-global-vars))))
(set! *defined-macros*
(append
;(map
; (lambda (v)
; (cons (car v) (cdr v)))
; macros))
macros
*defined-macros*)))
(macro:load-env! *defined-macros*)
;TODO: try this again, make sure macro is loaded:
(trace:info *defined-macros*)
(trace:info (list 'macro-env (macro:get-env)))
;; END JAE DEBUG
(set! input-program (expand input-program))

View file

@ -10,9 +10,14 @@
macro:macro?
macro:expand
macro:add!
macro:load-env!
macro:get-env
macro:get-defined-macros
)
(begin
;; top-level macro environment
(define *macro:env* '())
;; A list of all macros defined by the program/library being compiled
(define *macro:defined-macros* '())
@ -21,6 +26,14 @@
(cons (cons name body) *macro:defined-macros*))
#t)
(define (macro:load-env! defined-macros)
(set! *macro-env* (env:extend-environment
(map car defined-macros)
(map cdr defined-macros)
env:the-empty-environment)))
(define (macro:get-env) *macro:env*)
(define (macro:get-defined-macros) *macro:defined-macros*)
;; Macro section