summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/modules/parser/driver.scm2
-rw-r--r--src/modules/tacky/traverse.scm7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/modules/parser/driver.scm b/src/modules/parser/driver.scm
index f5e503e..e464a7a 100644
--- a/src/modules/parser/driver.scm
+++ b/src/modules/parser/driver.scm
@@ -27,7 +27,7 @@
(define (expression tokens)
(match tokens
(((? integer? int))
- int)
+ (list 'const int))
(((or 'neg 'not) expr ...)
(list 'expr (car tokens) (expression expr)))
(('left-paren expr ... 'right-paren)
diff --git a/src/modules/tacky/traverse.scm b/src/modules/tacky/traverse.scm
index 5f1ad1f..2fd4ca7 100644
--- a/src/modules/tacky/traverse.scm
+++ b/src/modules/tacky/traverse.scm
@@ -19,9 +19,10 @@
(list (list 'ret (car val)))))))
(define (expr op val)
- (cond
- ((integer? val) (make-instruction op (imm val) '()))
- (#t (make-instruction op (car val) (cdr val)))))
+ (make-instruction op (car val) (cdr val)))
+
+(define (const val)
+ (cons (imm val) '()))
(define (make-instruction op src instrs)
(let ((dst (make-temporary)))