WIP scheme compiler

This commit is contained in:
Dane Johnson 2025-08-07 16:30:47 -05:00
parent 5915c42fe3
commit e31483a76e

22
scmvm/language/scheme.scm Normal file
View File

@ -0,0 +1,22 @@
(define-module (scmvm language scheme)
#:use-module (scmvm assembler)
#:use-module (ice-9 match))
;; Scheme compiler
;; Scheme subset we're targeting
;; <prgm> ::= <top> ...
;; <top> ::= <def> | <exp>
;; <def> ::= (define <var> <exp>)
;; | (define (<var> <var> ...) <exp> ...)
;; <exp> ::= (lambda (<var> ...) <exp> ...)
;; | (if <exp> <exp> <exp>)
;; | (<exp> <exp> ...)
;; | (let ((<var> <exp>) ...) <exp> ...)
;; | (begin <exp> ...)
;; | <num> | <sym> | <var> | #t | #f
;; A-Normalization
;; All arguments to lambdas are atomic
;; <prgm> ::= <top> ...
;; <top>