WIP scheme compiler
This commit is contained in:
parent
5915c42fe3
commit
e31483a76e
22
scmvm/language/scheme.scm
Normal file
22
scmvm/language/scheme.scm
Normal 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>
|
Loading…
Reference in New Issue
Block a user