mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
WIP
This commit is contained in:
parent
a0af78adb1
commit
743adfa4f5
1 changed files with 52 additions and 0 deletions
|
@ -871,6 +871,58 @@
|
|||
result)
|
||||
(cdr exp)
|
||||
env))))))
|
||||
;;(define (expand-body result exp env)
|
||||
;; (if (null? exp)
|
||||
;; (reverse result)
|
||||
;; (let ((this-exp (car exp)))
|
||||
;; (cond
|
||||
;; ;; Splice in begin contents and keep expanding body
|
||||
;; ((begin? (car exp))
|
||||
;; (let* ((expr (car exp))
|
||||
;; (begin-exprs (begin->exps expr)))
|
||||
;; (expand-body
|
||||
;; result
|
||||
;; (append begin-exprs (cdr exp))
|
||||
;; env)))
|
||||
;; ((or (const? this-exp)
|
||||
;; (prim? this-exp)
|
||||
;; (ref? this-exp)
|
||||
;; (quote? this-exp))
|
||||
;; (expand-body (cons this-exp result) (cdr exp) env))
|
||||
;; ((or (define? this-exp)
|
||||
;; (define-c? this-exp)
|
||||
;; (define-syntax? this-exp)
|
||||
;; (lambda? this-exp)
|
||||
;; (set!? this-exp)
|
||||
;; (if? this-exp))
|
||||
;; (expand-body
|
||||
;; (cons
|
||||
;; (expand this-exp env)
|
||||
;; result)
|
||||
;; (cdr exp)
|
||||
;; env))
|
||||
;; (else
|
||||
;; (let ((macro #f))
|
||||
;; (when (and (app? (car exp))
|
||||
;; (symbol? (caar exp)))
|
||||
;; (set! macro (env:lookup (caar exp) env #f)))
|
||||
;; (if (tagged-list? 'macro macro)
|
||||
;; ;; Expand macro here so we can catch begins in the expanded code,
|
||||
;; ;; including nested begins
|
||||
;; (let ((expanded (macro:expand (car exp) macro env)))
|
||||
;; ;; Call with expanded macro in case we need to expand again
|
||||
;; (expand-body
|
||||
;; result
|
||||
;; (cons expanded (cdr exp))
|
||||
;; env))
|
||||
;; ;; No macro, use main expand function to process
|
||||
;; (expand-body
|
||||
;; (cons
|
||||
;; (expand (car exp) env)
|
||||
;; result)
|
||||
;; (cdr exp)
|
||||
;; env))))))))
|
||||
|
||||
|
||||
;; Top-level analysis
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue