From 82dfdd5e98bb296e73bbb3ec1c01ca5c22aac631 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Mon, 24 Jan 2022 20:41:07 -0800 Subject: Implement lambda? --- csc/ir2.csc | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 csc/ir2.csc (limited to 'csc/ir2.csc') diff --git a/csc/ir2.csc b/csc/ir2.csc new file mode 100644 index 0000000..1542f1e --- /dev/null +++ b/csc/ir2.csc @@ -0,0 +1,99 @@ +(define-library (csc ir2) + (export + lambda-body + lambda-case-alternate + lambda-case-arguments + lambda-case-body + lambda-case-gensyms + lambda-case-rest + lambda-case? + make-lambda-case + + ; Re-exports from IR1. + lambda? + make-lambda + call-arguments + call-procedure + call? + constant-expression + constant? + if-alternate + if-consequent + if-test + if? + library-ref-library + library-ref-name + library-ref-public? + library-ref? + library-set-expression + library-set-library + library-set-name + library-set-public? + library-set? + make-call + make-constant + make-if + make-library-ref + make-library-set + make-sequence + make-toplevel-define + make-void + sequence-head + sequence-tail + sequence? + toplevel-define-expression + toplevel-define-name + toplevel-define? + void?) + (import (scheme base) + (only (csc ir1) + call-arguments + call-procedure + call? + constant-expression + constant? + if-alternate + if-consequent + if-test + if? + lambda-body + lambda? + library-ref-library + library-ref-name + library-ref-public? + library-ref? + library-set-expression + library-set-library + library-set-name + library-set-public? + library-set? + make-call + make-constant + make-if + make-lambda + make-library-ref + make-library-set + make-sequence + make-toplevel-define + make-void + sequence-head + sequence-tail + sequence? + toplevel-define-expression + toplevel-define-name + toplevel-define? + void?)) + (begin + ; This library defines the intermediate representation IR2. + ; It's CPS time bitch. + + + ; idx + ; Reference to a variable by index in the closure. + (define-record-type + (make-closure-ref idx) + closure-ref? + (idx closure-ref-index)) + + + ; arguments rest -- cgit v1.3.1