(define-module (backend ast ir) #:export (prog srout neg not mov stack reg imm tmp ret)) ;;; Commentary: ;;; ;;; Nodes which exist to do nothing when evaluated. ;;; ;;; Code: (define (ir-node type . args) (cons type args)) (define (prog func) (ir-node 'prog func)) (define (srout label instrs) (ir-node 'srout label instrs)) (define (neg dst) (ir-node 'neg dst)) (define (not dst) (ir-node 'not dst)) (define (mov src dst) (ir-node 'mov src dst)) (define (stack val) (ir-node 'stack val)) (define (reg val) (ir-node 'reg val)) (define (imm val) (ir-node 'imm val)) (define (tmp num) (ir-node 'tmp num)) (define (ret) (ir-node 'ret))