Make the ABI respect stack etc.
[scheme.git] / ast.scm
diff --git a/ast.scm b/ast.scm
index c81bc2b38ef4a9bbd70590f83d49dddd2b87948b..a0899192e21a1d44b0fe3296e380604133a3f1d2 100644 (file)
--- a/ast.scm
+++ b/ast.scm
@@ -7,6 +7,7 @@
       ('! #t)
       ('= #t)
       ('bool->int #t)
+      ('print #t)
       (else #f)))
   (cond
    ((list? x)
       ('let 'let)
       ('lambda 'lambda)
       ('closure 'closure) ; only available in codegen
+      ('static-string 'static-string) ; only available in codegen
       (else 'app)))
    ((builtin? x) 'builtin)
    ((symbol? x) 'var)
    ((integer? x) 'int-literal)
-   ((boolean? x) 'bool-literal)))
+   ((boolean? x) 'bool-literal)
+   ((string? x) 'string-literal)))
 
 (define (ast-traverse f x)
   (case (ast-type x)
     ('let `(let ,(map (lambda (x) (list (car x) (f (cadr x))))
                      (let-bindings x))
-            ,@(map f (let-body e))))
+            ,@(map f (let-body x))))
     ('app (map f x))
-    ('lambda `(lambda ,(lambda-args x) ,(f lambda-body)))
+    ('lambda `(lambda ,(lambda-args x) ,(f (lambda-body x))))
     ('if `(if ,@(map f (cdr x))))
     (else x)))