summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-04-08 00:41:00 -0400
committerbd <bdunahu@operationnull.com>2025-04-08 00:41:00 -0400
commit4c76966b49e8559f710013463dac04143c1f4e09 (patch)
tree4959e1e151baf67a0093e57baecc1a8afd80cd9c
parent0fe2cc70abacc7c9e7aa2602836c8226bb1a1dc3 (diff)
Add plus and minus symbols to lexer
-rw-r--r--input/add-loop.asm4
-rw-r--r--src/lex.lisp3
-rw-r--r--t/lex.lisp8
3 files changed, 13 insertions, 2 deletions
diff --git a/input/add-loop.asm b/input/add-loop.asm
index e24a7e6..6379831 100644
--- a/input/add-loop.asm
+++ b/input/add-loop.asm
@@ -12,8 +12,8 @@
jrl CHECK
LOOP:
add $9 $fp $5
- load $7 0($9)
- load $8 1($9)
+ load $7 -0($9)
+ load $8 +1($9)
add $7 $7 $8
store $7 0($9)
addi $5 $5 0x1
diff --git a/src/lex.lisp b/src/lex.lisp
index eea0709..d5c77a1 100644
--- a/src/lex.lisp
+++ b/src/lex.lisp
@@ -54,6 +54,9 @@ Comments start with a semi-colon ';' and all tokens after are ignored."
((char= chr #\:) 'colon)
((char= chr #\$) 'dollar)
+ ((char= chr #\+) 'plus)
+ ((char= chr #\-) 'minus)
+
((digit-char-p chr)
(read-immediate chr))
diff --git a/t/lex.lisp b/t/lex.lisp
index ab0ed99..dfa632a 100644
--- a/t/lex.lisp
+++ b/t/lex.lisp
@@ -31,6 +31,14 @@
(read-this "$"
(is (eq (lex:read-token) 'lex::dollar))))
+(test read-token-reads-plus
+ (read-this "+"
+ (is (eq (lex:read-token) 'lex::plus))))
+
+(test read-token-reads-minus
+ (read-this "-"
+ (is (eq (lex:read-token) 'lex::minus))))
+
(test read-token-ignores-space
(read-this " ("
(is (eq (lex:read-token) 'lex::left-paren))))