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

View file

@ -10,9 +10,14 @@
macro:macro? macro:macro?
macro:expand macro:expand
macro:add! macro:add!
macro:load-env!
macro:get-env
macro:get-defined-macros macro:get-defined-macros
) )
(begin (begin
;; top-level macro environment
(define *macro:env* '())
;; A list of all macros defined by the program/library being compiled ;; A list of all macros defined by the program/library being compiled
(define *macro:defined-macros* '()) (define *macro:defined-macros* '())
@ -21,6 +26,14 @@
(cons (cons name body) *macro:defined-macros*)) (cons (cons name body) *macro:defined-macros*))
#t) #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*) (define (macro:get-defined-macros) *macro:defined-macros*)
;; Macro section ;; Macro section