diff --git a/Makefile b/Makefile index 0fec8496..8212fe2f 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,8 @@ SMODULES = \ scheme/read \ scheme/time \ scheme/write \ + scheme/cyclone/ast \ + scheme/cyclone/optimize-cps \ scheme/cyclone/cgen \ scheme/cyclone/common \ scheme/cyclone/libraries \ @@ -101,6 +103,8 @@ bootstrap: icyc cp scheme/cyclone/common.c $(BOOTSTRAP_DIR)/scheme/cyclone cp icyc.scm $(BOOTSTRAP_DIR) cp tests/unit-tests.scm $(BOOTSTRAP_DIR) + cp scheme/cyclone/ast.c $(BOOTSTRAP_DIR)/scheme/cyclone + cp scheme/cyclone/optimize-cps.c $(BOOTSTRAP_DIR)/scheme/cyclone cp scheme/cyclone/libraries.c $(BOOTSTRAP_DIR)/scheme/cyclone cp scheme/cyclone/macros.c $(BOOTSTRAP_DIR)/scheme/cyclone cp scheme/cyclone/pretty-print.c $(BOOTSTRAP_DIR)/scheme/cyclone diff --git a/scheme/cyclone/ast.sld b/scheme/cyclone/ast.sld index 26a38494..d1995df7 100644 --- a/scheme/cyclone/ast.sld +++ b/scheme/cyclone/ast.sld @@ -9,7 +9,9 @@ (define-library (ast) ;(define-library (scheme cyclone ast) - (import (scheme base)) + (import (scheme base) + (scheme cyclone util) + ) (export ast:make-lambda ast:lambda? @@ -20,10 +22,14 @@ ast:se-lambda-body! ) (begin + (define *lambda-id* 0) (define-record-type - (ast:make-lambda id args body) + (ast:%make-lambda id args body) ast:lambda? (id ast:lambda-id) (args ast:lambda-args ast:set-lambda-args!) (body ast:lambda-body ast:se-lambda-body!)) + (define (ast:make-lambda args body) + (set! *lambda-id* (+ 1 *lambda-id*)) + (ast:%make-lambda *lambda-id* args body)) )) diff --git a/scheme/cyclone/opti-test.scm b/scheme/cyclone/opti-test.scm index e1df086f..4087630b 100644 --- a/scheme/cyclone/opti-test.scm +++ b/scheme/cyclone/opti-test.scm @@ -17,6 +17,9 @@ (newline)) -(define l (ast:make-lambda 0 '() '((write 1) (write 2) (write 3)))) +(define l (ast:make-lambda '() '((write 1) (write 2) (write 3)))) (write l) (newline) +(set! l (ast:make-lambda '() '((write 1) (write 2) (write 3)))) +(write `(l is now ,l)) +(newline) diff --git a/scheme/cyclone/transforms.sld b/scheme/cyclone/transforms.sld index 375a54d6..20294123 100644 --- a/scheme/cyclone/transforms.sld +++ b/scheme/cyclone/transforms.sld @@ -15,6 +15,7 @@ (scheme file) (scheme read) (scheme write) + (scheme cyclone ast) (scheme cyclone common) (scheme cyclone libraries) (scheme cyclone macros)