Staging (scheme read)

This commit is contained in:
Justin Ethier 2015-05-20 01:09:23 -04:00
parent e0df1843c9
commit cc22445c2b
4 changed files with 38 additions and 66 deletions

View file

@ -1,7 +1,13 @@
TESTSCM = unit-tests TESTSCM = unit-tests
TESTFILES = $(addprefix tests/, $(addsuffix .scm, $(TESTSCM))) TESTFILES = $(addprefix tests/, $(addsuffix .scm, $(TESTSCM)))
all: cyclone icyc all: cyclone scheme/base.o scheme/read.o icyc
scheme/base.o: cyclone scheme/base.sld
./cyclone scheme/base.sld
scheme/read.o: cyclone scheme/read.sld
./cyclone scheme/read.sld
trans.so: trans.scm trans.so: trans.scm
csc -s trans.scm csc -s trans.scm
@ -39,28 +45,28 @@ cyclone: cyclone.scm trans.so cgen.so parser.so libcyclone.a
test: $(TESTFILES) cyclone test: $(TESTFILES) cyclone
$(foreach f,$(TESTSCM), echo tests/$(f) ; ./cyclone tests/$(f).scm && tests/$(f) && rm -rf tests/$(f);) $(foreach f,$(TESTSCM), echo tests/$(f) ; ./cyclone tests/$(f).scm && tests/$(f) && rm -rf tests/$(f);)
############################## ###############################
# Temporary testing directives ## Temporary testing directives
.PHONY: test2 #.PHONY: test2
test2: examples/hello-library/int-test/hello.c libcyclone.a #test2: examples/hello-library/int-test/hello.c libcyclone.a
./cyclone scheme/base.sld # ./cyclone scheme/base.sld
cd examples/hello-library ; ../../cyclone libs/lib1.sld # cd examples/hello-library ; ../../cyclone libs/lib1.sld
cd examples/hello-library ; ../../cyclone libs/lib2.sld # cd examples/hello-library ; ../../cyclone libs/lib2.sld
cd examples/hello-library ; ../../cyclone hello.scm # cd examples/hello-library ; ../../cyclone hello.scm
# gcc examples/hello-library/int-test/lib2.c -I. -g -c -o lib2.o ## gcc examples/hello-library/int-test/lib2.c -I. -g -c -o lib2.o
# gcc examples/hello-library/int-test/hello.c -I. -g -c -o hello.o ## gcc examples/hello-library/int-test/hello.c -I. -g -c -o hello.o
# gcc hello.o lib2.o -L. -lcyclone -lm -o hello ## gcc hello.o lib2.o -L. -lcyclone -lm -o hello
# gcc examples/hello-library/hello.c -L. -lcyclone -lm -I. -g -o hello ## gcc examples/hello-library/hello.c -L. -lcyclone -lm -I. -g -o hello
# TODO: will need to manually compile hello example. need to manually add the entry points to hello, and there is an issue in the libs with Cyc_global_vars not being assigned. but this still leads to a tag error so there must be other issues... ## TODO: will need to manually compile hello example. need to manually add the entry points to hello, and there is an issue in the libs with Cyc_global_vars not being assigned. but this still leads to a tag error so there must be other issues...
.PHONY: test3 #.PHONY: test3
test3: #test3:
gcc examples/hello-library/int-test/scheme/base.c -I/home/justin/Documents/cyclone/ -g -c -o scheme/base.o # gcc examples/hello-library/int-test/scheme/base.c -I/home/justin/Documents/cyclone/ -g -c -o scheme/base.o
cd examples/hello-library ; gcc int-test/libs/lib1.c -I/home/justin/Documents/cyclone/ -g -c -o libs/lib1.o # cd examples/hello-library ; gcc int-test/libs/lib1.c -I/home/justin/Documents/cyclone/ -g -c -o libs/lib1.o
cd examples/hello-library ; gcc int-test/libs/lib2.c -I/home/justin/Documents/cyclone/ -g -c -o libs/lib2.o # cd examples/hello-library ; gcc int-test/libs/lib2.c -I/home/justin/Documents/cyclone/ -g -c -o libs/lib2.o
cd examples/hello-library ; gcc int-test/hello.c -I/home/justin/Documents/cyclone/ -g -c -o hello.o # cd examples/hello-library ; gcc int-test/hello.c -I/home/justin/Documents/cyclone/ -g -c -o hello.o
cd examples/hello-library ; gcc hello.o libs/lib1.o /home/justin/Documents/cyclone/scheme/base.o libs/lib2.o -L/home/justin/Documents/cyclone/ -lcyclone -lm -I/home/justin/Documents/cyclone/ -g -o hello # cd examples/hello-library ; gcc hello.o libs/lib1.o /home/justin/Documents/cyclone/scheme/base.o libs/lib2.o -L/home/justin/Documents/cyclone/ -lcyclone -lm -I/home/justin/Documents/cyclone/ -g -o hello
# END temporary directives ## END temporary directives
########################## ###########################
icyc: cyclone icyc.scm eval.scm parser.scm runtime.h icyc: cyclone icyc.scm eval.scm parser.scm runtime.h
./cyclone icyc.scm ./cyclone icyc.scm

View file

@ -240,11 +240,11 @@
(if (member 'eval result) (if (member 'eval result)
(read-file (get-lib "eval.scm")) (read-file (get-lib "eval.scm"))
'()) '())
(if (member 'read result) ;(if (member 'read result)
(append ; (append
(read-file (get-lib "parser.scm")) ; (read-file (get-lib "parser.scm"))
'((define read cyc-read))) ; '((define read cyc-read)))
'()) ; '())
in-prog))) in-prog)))
(create-c-file program)))) ;; TODO: no, don't do same work twice. real answer is linking (create-c-file program)))) ;; TODO: no, don't do same work twice. real answer is linking

View file

@ -5,5 +5,5 @@
cyc-read ;; try this first, but it needs to go away!!! cyc-read ;; try this first, but it needs to go away!!!
read-all read-all
) )
(include "parser.scm") (include "../parser.scm")
(begin)) (begin))

View file

@ -1,37 +1,3 @@
(define (eval2 exp . env) (import (scheme base)
exp) (scheme read))
(write (read))
(define (test)
(call/cc
(lambda (k)
(write (list 'result
(with-exception-handler
(lambda (obj)
(display "Error: ")
(cond
((pair? obj)
(for-each
(lambda (o)
(display o)
(display " "))
obj))
(else
(display obj)))
(display "\n")
(k #t))
(lambda ()
(repl))))))))
(define (repl)
(display "cyclone> ")
;(let ((c 'done)) ;(read)))) ;; fine with this line
(let ((c (eval2 'done))) ;(read)))) ;; Crashes with this line
;(let ((c (read)))
(cond
((not (eof-object? c))
(write c)
;(test)
)
(else
(exit 0) ;; TODO: crashes on this branch... WTF?
))))
(test)