summaryrefslogtreecommitdiff
path: root/src/backend/ast/ir.scm
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-01-28 17:52:23 -0500
committerbd <bdunahu@operationnull.com>2025-01-28 17:52:23 -0500
commit5cea39649d613864f3e7a688cb2a7ecbde8bd6cd (patch)
tree9cfdeb42231f771b344fdf7b541d5f135eaf276f /src/backend/ast/ir.scm
parent467357ef13ea5d935d2e3aa5baaeef6317cd9590 (diff)
Simplified declaring new IR nodes in (backend ast ir)
Diffstat (limited to 'src/backend/ast/ir.scm')
-rw-r--r--src/backend/ast/ir.scm41
1 files changed, 9 insertions, 32 deletions
diff --git a/src/backend/ast/ir.scm b/src/backend/ast/ir.scm
index 102739c..e4c1713 100644
--- a/src/backend/ast/ir.scm
+++ b/src/backend/ast/ir.scm
@@ -16,35 +16,12 @@
;;;
;;; 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))
+(define-syntax def-ir-nodes
+ (syntax-rules ()
+ ((_ names ...)
+ (begin
+ (define (names . args)
+ (cons 'names args)) ...))))
+
+(def-ir-nodes
+ prog srout neg not mov stack reg imm tmp ret)