Added autogen functions

This commit is contained in:
Justin Ethier 2015-02-24 12:47:30 -05:00
parent 5f6ec83589
commit a4fcdf0e9e
2 changed files with 37 additions and 32 deletions

View file

@ -1048,33 +1048,36 @@
(emit "}") (emit "}")
(emit *c-main-function*))) (emit *c-main-function*)))
; Unused - ;; Automatically generate blocks of code for the compiler
;;; Echo file to stdout ;; TODO: need a compiler option to call this from cmd line
;(define (emit-fp fp) (define (autogen)
; (let ((l (read-line fp))) (let ((fp (open-output-file "tmp.txt")))
; (if (eof-object? l) (autogen:defprimitives fp)
; (close-port fp) (autogen:primitive-procedures fp)
; (begin (close-output-port fp)))
; (display l)
; (newline) (define (autogen:defprimitives fp)
; (emit-fp fp))))) (for-each
; (lambda (p)
;(define (read-runtime fp) (display
; (letrec* (string-append
; ((break "/** SCHEME CODE ENTRY POINT **/") "defprimitive("
; (read-fp (lambda (header footer on-header?) (mangle p)
; (let ((l (read-line fp))) "); /* "
; (cond (symbol->string p)
; ((eof-object? l) " */\n")
; (close-port fp) fp))
; (cons (reverse header) (reverse footer))) *primitives*))
; (else
; (cond ;; List of primitive procedures
; ((equal? l break) (define (autogen:primitive-procedures fp)
; (read-fp header footer #f)) (pp ;; CHICKEN pretty-print
; (else (cons
; (if on-header? 'list
; (read-fp (cons l header) footer on-header?) (map
; (read-fp header (cons l footer) on-header?)))))))))) (lambda (p)
; `(list (quote ,p) ,p))
; (read-fp (list) (list) #t))) *primitives*))
fp))

View file

@ -497,7 +497,9 @@
; prim? : exp -> boolean ; prim? : exp -> boolean
(define (prim? exp) (define (prim? exp)
(member exp '( (member exp *primitives*))
(define *primitives* '(
Cyc-global-vars Cyc-global-vars
Cyc-get-cvar Cyc-get-cvar
Cyc-set-cvar! Cyc-set-cvar!
@ -559,7 +561,7 @@
read-char read-char
peek-char peek-char
write write
display))) display))
(define (prim-call? exp) (define (prim-call? exp)
(and (list? exp) (prim? (car exp)))) (and (list? exp) (prim? (car exp))))