(define-module (backend ast ir) #:export (prog-ir srout-ir mov-ir stack-ir reg-ir imm-ir tmp-ir ret-ir neg-ir not-ir plus-ir minus-ir mult-ir div-ir mod-ir)) ;;; Commentary: ;;; ;;; Nodes which exist to do nothing when evaluated. ;;; ;;; Code: (define-syntax def-ir-nodes (syntax-rules () ((_ names ...) (begin (define (names . args) (cons 'names args)) ...)))) (define-syntax def-ir-syms (syntax-rules () ((_ names ...) (begin (define names 'names) ...)))) (def-ir-nodes prog-ir srout-ir instr-ir mov-ir stack-ir reg-ir imm-ir tmp-ir) (def-ir-syms ret-ir neg-ir not-ir plus-ir minus-ir mult-ir div-ir mod-ir)