diff options
author | bd <bdunahu@operationnull.com> | 2025-04-08 00:41:00 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-08 00:41:00 -0400 |
commit | 4c76966b49e8559f710013463dac04143c1f4e09 (patch) | |
tree | 4959e1e151baf67a0093e57baecc1a8afd80cd9c | |
parent | 0fe2cc70abacc7c9e7aa2602836c8226bb1a1dc3 (diff) |
Add plus and minus symbols to lexer
-rw-r--r-- | input/add-loop.asm | 4 | ||||
-rw-r--r-- | src/lex.lisp | 3 | ||||
-rw-r--r-- | t/lex.lisp | 8 |
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)) @@ -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)))) |