first draft of import builtin function
This commit is contained in:
@@ -1,174 +0,0 @@
|
||||
PUSHFUN copy, 1;
|
||||
ASS "copy";
|
||||
POP 1;
|
||||
JUMP copy_end;
|
||||
|
||||
copy:
|
||||
ASS "L";
|
||||
POP 1;
|
||||
PUSHLST 0;
|
||||
ASS "L2";
|
||||
POP 1;
|
||||
PUSHINT 0;
|
||||
ASS "i";
|
||||
POP 1;
|
||||
|
||||
loop_start:
|
||||
PUSHVAR "i";
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "count";
|
||||
CALL 1, 1;
|
||||
LSS;
|
||||
JUMPIFNOTANDPOP loop_end;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
SELECT;
|
||||
PUSHVAR "L2";
|
||||
PUSHVAR "i";
|
||||
INSERT2;
|
||||
POP 1;
|
||||
PUSHVAR "i";
|
||||
PUSHINT 1;
|
||||
ADD;
|
||||
ASS "i";
|
||||
POP 1;
|
||||
JUMP loop_start;
|
||||
loop_end:
|
||||
PUSHVAR "L2";
|
||||
RETURN 1;
|
||||
RETURN 0;
|
||||
|
||||
copy_end:
|
||||
PUSHFUN bubble_sort, 2;
|
||||
ASS "bubble_sort";
|
||||
POP 1;
|
||||
JUMP bubble_sort_end;
|
||||
|
||||
bubble_sort:
|
||||
ASS "less";
|
||||
POP 1;
|
||||
ASS "L";
|
||||
POP 1;
|
||||
PUSHVAR "less";
|
||||
PUSHNNE;
|
||||
EQL;
|
||||
JUMPIFNOTANDPOP default_less_cb_end;
|
||||
PUSHFUN default_less_cb, 2;
|
||||
ASS "less";
|
||||
POP 1;
|
||||
JUMP default_less_cb_end;
|
||||
|
||||
default_less_cb:
|
||||
ASS "b";
|
||||
POP 1;
|
||||
ASS "a";
|
||||
POP 1;
|
||||
PUSHVAR "a";
|
||||
PUSHVAR "b";
|
||||
LSS;
|
||||
RETURN 1;
|
||||
RETURN 0;
|
||||
|
||||
default_less_cb_end:
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "copy";
|
||||
CALL 1, 1;
|
||||
ASS "L";
|
||||
POP 1;
|
||||
|
||||
outer_loop_start:
|
||||
PUSHFLS;
|
||||
ASS "swapped";
|
||||
POP 1;
|
||||
PUSHINT 0;
|
||||
ASS "i";
|
||||
POP 1;
|
||||
|
||||
inner_loop_start:
|
||||
PUSHVAR "i";
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "count";
|
||||
CALL 1, 1;
|
||||
PUSHINT 1;
|
||||
SUB;
|
||||
LSS;
|
||||
PUSHVAR "swapped";
|
||||
NOT;
|
||||
AND;
|
||||
JUMPIFNOTANDPOP outer_loop_end;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
SELECT;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
PUSHINT 1;
|
||||
ADD;
|
||||
SELECT;
|
||||
PUSHVAR "less";
|
||||
CALL 2, 1;
|
||||
JUMPIFNOTANDPOP if_branch_end;
|
||||
PUSHTRU;
|
||||
ASS "swapped";
|
||||
POP 1;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
PUSHINT 1;
|
||||
ADD;
|
||||
SELECT;
|
||||
ASS "tmp";
|
||||
POP 1;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
SELECT;
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
PUSHINT 1;
|
||||
ADD;
|
||||
INSERT2;
|
||||
POP 1;
|
||||
PUSHVAR "tmp";
|
||||
PUSHVAR "L";
|
||||
PUSHVAR "i";
|
||||
INSERT2;
|
||||
POP 1;
|
||||
|
||||
if_branch_end:
|
||||
PUSHVAR "i";
|
||||
PUSHINT 1;
|
||||
ADD;
|
||||
ASS "i";
|
||||
POP 1;
|
||||
JUMP inner_loop_start;
|
||||
|
||||
outer_loop_end:
|
||||
PUSHVAR "swapped";
|
||||
JUMPIFANDPOP outer_loop_start;
|
||||
PUSHVAR "L";
|
||||
RETURN 1;
|
||||
RETURN 0;
|
||||
|
||||
bubble_sort_end:
|
||||
PUSHLST 5;
|
||||
PUSHINT 0;
|
||||
PUSHINT 3;
|
||||
INSERT;
|
||||
PUSHINT 1;
|
||||
PUSHINT 2;
|
||||
INSERT;
|
||||
PUSHINT 2;
|
||||
PUSHINT 1;
|
||||
INSERT;
|
||||
PUSHINT 3;
|
||||
PUSHINT 6;
|
||||
INSERT;
|
||||
PUSHINT 4;
|
||||
PUSHINT 0;
|
||||
PUSHINT 2;
|
||||
SUB;
|
||||
INSERT;
|
||||
PUSHVAR "bubble_sort";
|
||||
CALL 1, 1;
|
||||
PUSHVAR "print";
|
||||
CALL 1, 1;
|
||||
POP 1;
|
||||
RETURN 0;
|
||||
@@ -12,7 +12,7 @@ fun copy(L) {
|
||||
return L2;
|
||||
}
|
||||
|
||||
fun bubble_sort(L, less) {
|
||||
fun bubbleSort(L, less) {
|
||||
if less == none:
|
||||
fun less(a, b) return a < b;
|
||||
|
||||
@@ -37,4 +37,4 @@ fun bubble_sort(L, less) {
|
||||
}
|
||||
|
||||
|
||||
print(bubble_sort([3, 2, 1, 6, 0-2]));
|
||||
print(bubbleSort([3, 2, 1, 6, 0-2]));
|
||||
@@ -1,5 +0,0 @@
|
||||
PUSHSTR "Hello, world!\n";
|
||||
PUSHVAR "print";
|
||||
CALL 1, 1;
|
||||
POP 1;
|
||||
RETURN 0;
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
a = 1;
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
vars, err = import("examples/imported.noja");
|
||||
print("vars=[", vars, "]\n");
|
||||
print("err=[", err, "]\n");
|
||||
+1
-1
@@ -34,4 +34,4 @@ w = pop(stack);
|
||||
assert(x == 3);
|
||||
assert(y == 2);
|
||||
assert(z == 1);
|
||||
assert(w == none);
|
||||
assert(w == none);
|
||||
|
||||
Reference in New Issue
Block a user