diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/parser/driver.scm | 2 | ||||
-rw-r--r-- | src/modules/tacky/traverse.scm | 7 |
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))) |