mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-15 16:57:35 +02:00
WIP - create top-level macro env
This commit is contained in:
parent
2c9cf5009a
commit
c887cfe04b
2 changed files with 25 additions and 14 deletions
26
cyclone.scm
26
cyclone.scm
|
@ -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))
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue