(define-module (modules generator generator) #:use-module (modules ast syntax-tree) #:use-module (modules ast assembly-tree) #:export (g-program)) (define (g-program p) (make-program (g-function (program-function p)))) (define (g-function f) (make-subroutine (g-id (function-id f)) (g-stmt (function-stmt f)))) (define (g-stmt s) (g-expr (stmt-expr s))) (define (g-expr e) ;; for now, we assume only 'return'! (list (make-instruction "movl" (string-append/shared "$" (number->string (const-int (expr-type e)))) "%eax") (make-instruction "ret" #f #f))) (define (g-id i) (id-symbol i))