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
|
;; 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))
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue