projects
/
scheme.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix some normalization issues, add codegen tests
[scheme.git]
/
ast.scm
diff --git
a/ast.scm
b/ast.scm
index 19dc7a0f5d3bea33793e1de676016be618baa103..2ffad975f66f1ec4fbca3f32f095e484658ed726 100644
(file)
--- a/
ast.scm
+++ b/
ast.scm
@@
-13,8
+13,20
@@
(define (lambda? x)
(and (list? x) (eq? (car x) 'lambda)))
(define (lambda? x)
(and (list? x) (eq? (car x) 'lambda)))
-(define lambda-arg cadr)
-(define lambda-body cddr)
+; for use in normalized form
+(define lambda-arg caadr)
+; for use elsewhere
+(define lambda-args cadr)
+(define lambda-body caddr)
(define (var? x)
(and (not (list? x)) (symbol? x)))
(define (var? x)
(and (not (list? x)) (symbol? x)))
+
+(define (builtin? x)
+ (case x
+ ('+ #t)
+ ('- #t)
+ ('* #t)
+ ('! #t)
+ ('bool->int #t)
+ (else #f)))