Throw warning on unassigned register

This commit is contained in:
Devine Lu Linvega 2024-04-05 21:34:17 -07:00
parent d7f19f5acf
commit 52e6c5d89a
3 changed files with 49 additions and 2 deletions

23
examples/arithmetic.modal Normal file
View File

@ -0,0 +1,23 @@
<> (add (s ?x) (s ?y)) ((s add ?x (s ?y)))
<> (add (s ?y) (0)) ((s ?y))
<> (add (0) (s ?y)) ((s ?y))
<> (add (0) (0)) (0)
<> (subtract (s ?x) (s ?y)) (subtract ?x ?y)
<> (subtract (s ?x) (0)) (s ?x)
<> (subtract (0) (s ?y)) (s ?y)
<> (subtract (0) (0)) (0)
<> (multiply (s ?x) (s ?y)) (add (s ?x) (multiply (s ?x) (subtract (s ?y) (s (0))))
<> (multiply (s ?x) (s (0)) (s ?x)
<> (multiply (s (0)) (s ?y) (s ?y)
<> (multiply (s ?x) (0)) (0)
<> (multiply (0) (s ?x)) (0)
<> (?x + ?y) (add ?x ?y)
<> (?x - ?y) (subtract ?x ?y)
<> (?x * ?y) (multiply ?x ?y)
<> (factorial (s (0))) ((s (0)))
<> (factorial (s ?x)) ((s ?x) * factorial ((s ?x) - (s (0))))
(s (0)) * (s (s (0)))

View File

@ -1,3 +1,23 @@
<> ((?x -> ?y)) (<> ?x ?y)
<> (add (s ?x) (s ?y)) ((s add ?x (s ?y)))
<> (add (s ?y) (0)) ((s ?y))
<> (add (0) (s ?y)) ((s ?y))
<> (add (0) (0)) (0)
(foo -> bar) foo
<> (subtract (s ?x) (s ?y)) (subtract ?x ?y)
<> (subtract (s ?x) (0)) (s ?x)
<> (subtract (0) (s ?y)) (s ?y)
<> (subtract (0) (0)) (0)
<> (multiply (s ?x) (s ?y)) (add (s ?x) (multiply (s ?x) (subtract (s ?y) (s (0))))
<> (multiply (s ?x) (s (0)) (s ?x)
<> (multiply (s (0)) (s ?y) (s ?y)
<> (multiply (s ?x) (0)) (0)
<> (multiply (0) (s ?x)) (0)
<> (?x + ?y) (add ?x ?y)
<> (?x - ?y) (subtract ?x ?y)
<> (?x * ?y) (multiply ?x ?y)
<> (factorial (s (0))) ((s (0)))
<> (factorial (s ?x)) ((s ?x) * factorial ((s ?x) - (s (0))))
(s (0)) * (s (s (0)))

View File

@ -71,6 +71,10 @@ writereg(char r)
{
int depth = 0;
char c, *s = regs[(int)r];
if(!s) {
printf("!! Reading from invalid register: ?%c\n", r);
return;
}
if(s[0] == '(') {
while((c = *s++)) {
if(c == '(') depth++;