cleanups and more test cases

This commit is contained in:
cozis
2022-08-12 05:30:41 +02:00
parent f630830b3c
commit 18e936f0ad
145 changed files with 1445 additions and 234 deletions
+10
View File
@@ -0,0 +1,10 @@
#source
return none;
#bytecode
PUSHNNE;
RETURN 1;
RETURN 0;
+8
View File
@@ -0,0 +1,8 @@
#source
{}
#bytecode
RETURN 0;
+11
View File
@@ -0,0 +1,11 @@
#source
-1;
#bytecode
PUSHINT 1;
NEG;
POP 1;
RETURN 0;
+11
View File
@@ -0,0 +1,11 @@
#source
+1;
#bytecode
PUSHINT 1;
POS;
POP 1;
RETURN 0;
+11
View File
@@ -0,0 +1,11 @@
#source
not 1;
#bytecode
PUSHINT 1;
NOT;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 == 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
EQL;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 != 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
NQL;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 < 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
LSS;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 > 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
GRT;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 <= 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
LEQ;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 >= 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
GEQ;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 and 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
AND;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
1 or 2;
#bytecode
PUSHINT 1;
PUSHINT 2;
OR;
POP 1;
RETURN 0;
+16
View File
@@ -0,0 +1,16 @@
#source
1 + 2 * 3;
#bytecode
PUSHINT 1;
PUSHINT 2;
PUSHINT 3;
MUL;
ADD;
POP 1;
RETURN 0;
+16
View File
@@ -0,0 +1,16 @@
#source
1 * 2 + 3;
#bytecode
PUSHINT 1;
PUSHINT 2;
MUL;
PUSHINT 3;
ADD;
POP 1;
RETURN 0;
+16
View File
@@ -0,0 +1,16 @@
#source
(1 + 2) * 3;
#bytecode
PUSHINT 1;
PUSHINT 2;
ADD;
PUSHINT 3;
MUL;
POP 1;
RETURN 0;
+14
View File
@@ -0,0 +1,14 @@
#source
1 + (2 * 3);
#bytecode
PUSHINT 1;
PUSHINT 2;
PUSHINT 3;
MUL;
ADD;
POP 1;
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
1 * 2 * 3 * 4;
#bytecode
PUSHINT 1;
PUSHINT 2;
MUL;
PUSHINT 3;
MUL;
PUSHINT 4;
MUL;
POP 1;
RETURN 0;
+16
View File
@@ -0,0 +1,16 @@
#source
1 * (2 * (3 * 4));
#bytecode
PUSHINT 1;
PUSHINT 2;
PUSHINT 3;
PUSHINT 4;
MUL;
MUL;
MUL;
POP 1;
RETURN 0;
+16
View File
@@ -0,0 +1,16 @@
#source
1 + 2 * 3 + 4;
#bytecode
PUSHINT 1;
PUSHINT 2;
PUSHINT 3;
MUL;
ADD;
PUSHINT 4;
ADD;
POP 1;
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
1 * 2 + 3 * 4;
#bytecode
PUSHINT 1;
PUSHINT 2;
MUL;
PUSHINT 3;
PUSHINT 4;
MUL;
ADD;
POP 1;
RETURN 0;
+23
View File
@@ -0,0 +1,23 @@
#source
A - B - C;
A - B * C;
#bytecode
PUSHVAR "A";
PUSHVAR "B";
SUB;
PUSHVAR "C";
SUB;
POP 1;
PUSHVAR "A";
PUSHVAR "B";
PUSHVAR "C";
MUL;
SUB;
POP 1;
RETURN 0;
+17
View File
@@ -0,0 +1,17 @@
#source
A and B or C and D;
#bytecode
PUSHVAR "A";
PUSHVAR "B";
AND;
PUSHVAR "C";
PUSHVAR "D";
AND;
OR;
POP 1;
RETURN 0;
+17
View File
@@ -0,0 +1,17 @@
#source
X or Y and Z or W;
#bytecode
PUSHVAR "X";
PUSHVAR "Y";
PUSHVAR "Z";
AND;
OR;
PUSHVAR "W";
OR;
POP 1;
RETURN 0;
+46
View File
@@ -0,0 +1,46 @@
#source
1 + 2 > 3 + 4;
1 + 2 < 3 + 4;
1 + 2 >= 3 + 4;
1 + 2 <= 3 + 4;
#bytecode
PUSHINT 1;
PUSHINT 2;
ADD;
PUSHINT 3;
PUSHINT 4;
ADD;
GRT;
POP 1;
PUSHINT 1;
PUSHINT 2;
ADD;
PUSHINT 3;
PUSHINT 4;
ADD;
LSS;
POP 1;
PUSHINT 1;
PUSHINT 2;
ADD;
PUSHINT 3;
PUSHINT 4;
ADD;
GEQ;
POP 1;
PUSHINT 1;
PUSHINT 2;
ADD;
PUSHINT 3;
PUSHINT 4;
ADD;
LEQ;
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
[1];
#bytecode
PUSHLST 1;
PUSHINT 0;
PUSHINT 1;
INSERT;
POP 1;
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
[true, false];
#bytecode
PUSHLST 2;
PUSHINT 0;
PUSHTRU;
INSERT;
PUSHINT 1;
PUSHFLS;
INSERT;
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
({'name': 'Francesco'});
#bytecode
PUSHMAP 1;
PUSHSTR "name";
PUSHSTR "Francesco";
INSERT;
POP 1;
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
({'name': 'Francesco', 'age': 25});
#bytecode
PUSHMAP 2;
PUSHSTR "name";
PUSHSTR "Francesco";
INSERT;
PUSHSTR "age";
PUSHINT 25;
INSERT;
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
({name: 'Francesco'});
#bytecode
PUSHMAP 1;
PUSHSTR "name";
PUSHSTR "Francesco";
INSERT;
POP 1;
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
({name: 'Francesco', age: 25});
#bytecode
PUSHMAP 2;
PUSHSTR "name";
PUSHSTR "Francesco";
INSERT;
PUSHSTR "age";
PUSHINT 25;
INSERT;
POP 1;
RETURN 0;
+14
View File
@@ -0,0 +1,14 @@
#source
({+name: 'Francesco'});
#bytecode
PUSHMAP 1;
PUSHVAR "name";
POS;
PUSHSTR "Francesco";
INSERT;
POP 1;
RETURN 0;
+14
View File
@@ -0,0 +1,14 @@
#source
({+name: 'Francesco'});
#bytecode
PUSHMAP 1;
PUSHVAR "name";
POS;
PUSHSTR "Francesco";
INSERT;
POP 1;
RETURN 0;
+11
View File
@@ -0,0 +1,11 @@
#source
var = none;
#bytecode
PUSHNNE;
ASS "var";
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
var[key] = none;
#bytecode
PUSHNNE;
PUSHVAR "var";
PUSHVAR "key";
INSERT2;
POP 1;
RETURN 0;
+17
View File
@@ -0,0 +1,17 @@
#source
A, B = func();
#bytecode
PUSHVAR "func";
CALL 0, 2;
ASS "B";
POP 1;
ASS "A";
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
var.key = none;
#bytecode
PUSHNNE;
PUSHVAR "var";
PUSHSTR "key";
INSERT2;
POP 1;
RETURN 0;
+11
View File
@@ -0,0 +1,11 @@
#source
func();
#bytecode
PUSHVAR "func";
CALL 0, 1;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
func(none);
#bytecode
PUSHNNE;
PUSHVAR "func";
CALL 1, 1;
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
func(true, false);
#bytecode
PUSHFLS;
PUSHTRU;
PUSHVAR "func";
CALL 2, 1;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
set[key];
#bytecode
PUSHVAR "set";
PUSHVAR "key";
SELECT;
POP 1;
RETURN 0;
+25
View File
@@ -0,0 +1,25 @@
#source
set["dog", "cow", "cat"];
#bytecode
PUSHVAR "set";
PUSHLST 3;
PUSHINT 0;
PUSHSTR "dog";
INSERT;
PUSHINT 1;
PUSHSTR "cow";
INSERT;
PUSHINT 2;
PUSHSTR "cat";
INSERT;
SELECT;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
set.key;
#bytecode
PUSHVAR "set";
PUSHSTR "key";
SELECT;
POP 1;
RETURN 0;
+12
View File
@@ -0,0 +1,12 @@
#source
if true:
{}
#bytecode
PUSHTRU;
JUMPIFNOTANDPOP end;
end:
RETURN 0;
+14
View File
@@ -0,0 +1,14 @@
#source
if true:
none;
#bytecode
PUSHTRU;
JUMPIFNOTANDPOP end;
PUSHNNE;
POP 1;
end:
RETURN 0;
+17
View File
@@ -0,0 +1,17 @@
#source
if true:
{}
else
{}
#bytecode
PUSHTRU;
JUMPIFNOTANDPOP end;
JUMP end;
end:
RETURN 0;
+20
View File
@@ -0,0 +1,20 @@
#source
if none:
true;
else
false;
#bytecode
PUSHNNE;
JUMPIFNOTANDPOP else;
PUSHTRU;
POP 1;
JUMP end;
else:
PUSHFLS;
POP 1;
end:
RETURN 0;
+14
View File
@@ -0,0 +1,14 @@
#source
while none:
{}
#bytecode
begin:
PUSHNNE;
JUMPIFNOTANDPOP end;
JUMP begin;
end:
RETURN 0;
+19
View File
@@ -0,0 +1,19 @@
#source
while none:
true;
false;
#bytecode
begin:
PUSHNNE;
JUMPIFNOTANDPOP end;
PUSHTRU;
POP 1;
JUMP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+23
View File
@@ -0,0 +1,23 @@
#source
while none: {
true;
"Hello, world!";
}
false;
#bytecode
begin:
PUSHNNE;
JUMPIFNOTANDPOP end;
PUSHTRU;
POP 1;
PUSHSTR "Hello, world!";
POP 1;
JUMP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+25
View File
@@ -0,0 +1,25 @@
#source
while none: {
true;
"Hello, world!";
break;
}
false;
#bytecode
begin:
PUSHNNE;
JUMPIFNOTANDPOP end;
PUSHTRU;
POP 1;
PUSHSTR "Hello, world!";
POP 1;
JUMP end;
JUMP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+18
View File
@@ -0,0 +1,18 @@
#source
while none:
break;
false;
#bytecode
begin:
PUSHNNE;
JUMPIFNOTANDPOP end;
JUMP end;
JUMP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+13
View File
@@ -0,0 +1,13 @@
#source
do
{}
while none;
#bytecode
begin:
PUSHNNE;
JUMPIFANDPOP begin;
RETURN 0;
+18
View File
@@ -0,0 +1,18 @@
#source
do
true;
while none;
false;
#bytecode
begin:
PUSHTRU;
POP 1;
PUSHNNE;
JUMPIFANDPOP begin;
PUSHFLS;
POP 1;
RETURN 0;
+21
View File
@@ -0,0 +1,21 @@
#source
do {
true;
"Hello, world!";
} while none;
false;
#bytecode
begin:
PUSHTRU;
POP 1;
PUSHSTR "Hello, world!";
POP 1;
PUSHNNE;
JUMPIFANDPOP begin;
PUSHFLS;
POP 1;
RETURN 0;
+24
View File
@@ -0,0 +1,24 @@
#source
do {
true;
"Hello, world!";
break;
} while none;
false;
#bytecode
begin:
PUSHTRU;
POP 1;
PUSHSTR "Hello, world!";
POP 1;
JUMP end;
PUSHNNE;
JUMPIFANDPOP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+18
View File
@@ -0,0 +1,18 @@
#source
do
break;
while none;
false;
#bytecode
begin:
JUMP end;
PUSHNNE;
JUMPIFANDPOP begin;
end:
PUSHFLS;
POP 1;
RETURN 0;
+15
View File
@@ -0,0 +1,15 @@
#source
fun X() {}
#bytecode
PUSHFUN fun, 0;
ASS "X";
POP 1;
JUMP end;
fun:
RETURN 0;
end:
RETURN 0;
+17
View File
@@ -0,0 +1,17 @@
#source
fun X() "Hello, world!";
#bytecode
PUSHFUN fun, 0;
ASS "X";
POP 1;
JUMP end;
fun:
PUSHSTR "Hello, world!";
POP 1;
RETURN 0;
end:
RETURN 0;
+22
View File
@@ -0,0 +1,22 @@
#source
fun X() {
"Hello, world!";
return false;
}
#bytecode
PUSHFUN fun, 0;
ASS "X";
POP 1;
JUMP end;
fun:
PUSHSTR "Hello, world!";
POP 1;
PUSHFLS;
RETURN 1;
RETURN 0;
end:
RETURN 0;
+25
View File
@@ -0,0 +1,25 @@
#source
fun add(a, b) {
return a + b;
}
#bytecode
PUSHFUN fun, 2;
ASS "add";
POP 1;
JUMP end;
fun:
ASS "b";
POP 1;
ASS "a";
POP 1;
PUSHVAR "a";
PUSHVAR "b";
ADD;
RETURN 1;
RETURN 0;
end:
RETURN 0;