|
|
|
|
@ -789,3 +789,149 @@ |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-cargar-en-reg-dest-01 |
|
|
|
|
(testing "Test 01 cargar-en-reg-dest" |
|
|
|
|
(is (= |
|
|
|
|
(cargar-en-reg-dest [[['String "2"] ['i64 6] ['i64 2] ['i64 2] ['i64 2]] [['i64 6] ['i64 2] ['i64 [0 3]] ['i64 [0 4]] ['i64 2] ['i64 2]]] [0 4] 'i64 0) |
|
|
|
|
[[['String "2"] ['i64 6] ['i64 2] ['i64 2] ['i64 0]] [['i64 6] ['i64 2] ['i64 [0 3]] ['i64 [0 4]] ['i64 2] ['i64 2]]] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-cargar-en-reg-dest-02 |
|
|
|
|
(testing "Test 02 cargar-en-reg-dest" |
|
|
|
|
(is (= |
|
|
|
|
(cargar-en-reg-dest [[['String "2"] ['i64 6] ['i64 2] ['i64 2] ['i64 0]] [['i64 6] ['i64 2] ['i64 [0 3]] ['i64 [0 4]] ['i64 2] ['i64 2]]] [0 3] 'f64 3) |
|
|
|
|
[[['String "2"] ['i64 6] ['i64 2] ['f64 3] ['i64 0]] [['i64 6] ['i64 2] ['i64 [0 3]] ['i64 [0 4]] ['i64 2] ['i64 2]]] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-cargar-en-ult-reg-01 |
|
|
|
|
(testing "Test 01 cargar-en-ult-reg" |
|
|
|
|
(is (= |
|
|
|
|
(cargar-en-ult-reg [[['String "2"] ['i64 6] ['i64 2] ['i64 3] ['i64 0]] [['i64 nil] ['i64 nil]]] 1 'i64 0) |
|
|
|
|
[[['String "2"] ['i64 6] ['i64 2] ['i64 3] ['i64 0]] [['i64 nil] ['i64 0]]] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-cargar-en-ult-reg-02 |
|
|
|
|
(testing "Test 02 cargar-en-ult-reg" |
|
|
|
|
(is (= |
|
|
|
|
(cargar-en-ult-reg [[['String "2"] ['i64 6] ['i64 2] ['i64 3] ['i64 0]] [['i64 nil] ['i64 0]]] 0 'f64 3) |
|
|
|
|
[[['String "2"] ['i64 6] ['i64 2] ['i64 3] ['i64 0]] [['f64 3] ['i64 0]]] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-fixup-01 |
|
|
|
|
(testing "Test 01 fixup" |
|
|
|
|
(is (= |
|
|
|
|
(fixup [ |
|
|
|
|
(symbol "{") |
|
|
|
|
(list 'x '= 20 (symbol ";") (symbol "}") (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'x (symbol ")") (symbol "}")) |
|
|
|
|
['fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'x (symbol ":") 'i64 (symbol ";") 'if false (symbol "{") 'x '= 10 (symbol ";") (symbol "}") 'else] |
|
|
|
|
8 |
|
|
|
|
[[0 1 2] [['main ['fn [() ()]] 2] ['x ['var-inmut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 2] 'HLT ['PUSHFI false] ['JC 5] ['JMP '?] ['PUSHFI 10] ['POP 0] ['JMP '?]] |
|
|
|
|
[[2 ['i64 nil]]] |
|
|
|
|
] 4) |
|
|
|
|
[ |
|
|
|
|
(symbol "{") |
|
|
|
|
(list 'x '= 20 (symbol ";") (symbol "}") (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'x (symbol ")") (symbol "}")) |
|
|
|
|
['fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'x (symbol ":") 'i64 (symbol ";") 'if false (symbol "{") 'x '= 10 (symbol ";") (symbol "}") 'else] |
|
|
|
|
8 |
|
|
|
|
[[0 1 2] [['main ['fn [() ()]] 2] ['x ['var-inmut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 2] 'HLT ['PUSHFI false] ['JC 5] ['JMP '?] ['PUSHFI 10] ['POP 0] ['JMP '?]] |
|
|
|
|
[[2 ['i64 nil]]] |
|
|
|
|
] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-fixup-02 |
|
|
|
|
(testing "Test 02 fixup" |
|
|
|
|
(is (= |
|
|
|
|
(fixup [ |
|
|
|
|
(symbol "{") |
|
|
|
|
(list 'x '= 20 (symbol ";") (symbol "}") (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'x (symbol ")") (symbol "}")) |
|
|
|
|
['fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'x (symbol ":") 'i64 (symbol ";") 'if false (symbol "{") 'x '= 10 (symbol ";") (symbol "}") 'else] |
|
|
|
|
:sin-errores |
|
|
|
|
[[0 1 2] [['main ['fn [() ()]] 2] ['x ['var-inmut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 2] 'HLT ['PUSHFI false] ['JC 5] ['JMP '?] ['PUSHFI 10] ['POP 0] ['JMP '?]] |
|
|
|
|
[[2 ['i64 nil]]] |
|
|
|
|
] 4) |
|
|
|
|
[ |
|
|
|
|
(symbol "{") |
|
|
|
|
(list 'x '= 20 (symbol ";") (symbol "}") (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'x (symbol ")") (symbol "}")) |
|
|
|
|
['fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'x (symbol ":") 'i64 (symbol ";") 'if false (symbol "{") 'x '= 10 (symbol ";") (symbol "}") 'else] |
|
|
|
|
:sin-errores |
|
|
|
|
[[0 1 2] [['main ['fn [() ()]] 2] ['x ['var-inmut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 2] 'HLT ['PUSHFI false] ['JC 5] ['JMP 8] ['PUSHFI 10] ['POP 0] ['JMP '?]] |
|
|
|
|
[[2 ['i64 nil]]] |
|
|
|
|
] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-generar-ref-01 |
|
|
|
|
(testing "Test 01 generar ref" |
|
|
|
|
(is (= |
|
|
|
|
(generar-ref [ |
|
|
|
|
(symbol ")") |
|
|
|
|
(list (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'v (symbol ")") (symbol ";") (symbol "}")) |
|
|
|
|
['fn 'inc (symbol "(") 'v (symbol ":") (symbol "&") 'mut 'i64 (symbol ")") (symbol "{") '* 'v (symbol "+=") 1 (symbol ";") (symbol "}") 'fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'mut 'v (symbol ":") 'i64 (symbol "=") 5 (symbol ";") 'inc (symbol "(") (symbol "&") 'mut 'v] |
|
|
|
|
8 |
|
|
|
|
[[0 2] [['inc ['fn [(list ['v (symbol ":") (symbol "&") 'mut 'i64]) ()]] 2] ['main ['fn [() ()]] 6] ['v ['var-mut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 6] 'HLT ['POPARG 0] ['PUSHFI 1] ['POPADDREF 0] 'RETN ['PUSHFI 5] ['POP 0]] |
|
|
|
|
[[2 ['i64 nil]] [6 ['i64 nil]]] |
|
|
|
|
]) |
|
|
|
|
[ |
|
|
|
|
(symbol")") |
|
|
|
|
(list (symbol ";") 'println! (symbol"(") "{}" (symbol ",") 'v (symbol ")") (symbol ";") (symbol "}")) |
|
|
|
|
['fn 'inc (symbol "(") 'v (symbol ":") (symbol "&") 'mut 'i64 (symbol ")") (symbol "{") '* 'v (symbol "+=") 1 (symbol ";") (symbol "}") 'fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'mut 'v (symbol ":") 'i64 (symbol "=") 5 (symbol ";") 'inc (symbol "(") (symbol "&") 'mut 'v] |
|
|
|
|
8 |
|
|
|
|
[[0 2] [['inc ['fn [(list ['v (symbol ":") (symbol "&") 'mut 'i64]) ()]] 2] ['main ['fn [() ()]] 6] ['v ['var-mut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 6] 'HLT ['POPARG 0] ['PUSHFI 1] ['POPADDREF 0] 'RETN ['PUSHFI 5] ['POP 0]] |
|
|
|
|
[[2 ['i64 nil]] [6 ['i64 nil]]] |
|
|
|
|
] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
(deftest test-generar-ref-02 |
|
|
|
|
(testing "Test 02 generar ref" |
|
|
|
|
(is (= |
|
|
|
|
(generar-ref |
|
|
|
|
[ |
|
|
|
|
(symbol ")") |
|
|
|
|
(list (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'v (symbol ")") (symbol ";") (symbol "}")) |
|
|
|
|
['fn 'inc (symbol "(") 'v (symbol ":") (symbol "&") 'mut 'i64 (symbol ")") (symbol "{") '* 'v (symbol "+=") 1 (symbol ";") (symbol "}") 'fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'mut 'v (symbol ":") 'i64 (symbol "=") 5 (symbol ";") 'inc (symbol "(") (symbol "&") 'mut 'v] |
|
|
|
|
:sin-errores |
|
|
|
|
[[0 2] [['inc ['fn [(list ['v (symbol ":") (symbol "&") 'mut 'i64]) ()]] 2] ['main ['fn [() ()]] 6] ['v ['var-mut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 6] 'HLT ['POPARG 0] ['PUSHFI 1] ['POPADDREF 0] 'RETN ['PUSHFI 5] ['POP 0]] |
|
|
|
|
[[2 ['i64 nil]] [6 ['i64 nil]]] |
|
|
|
|
] |
|
|
|
|
) |
|
|
|
|
[ |
|
|
|
|
(symbol ")") |
|
|
|
|
(list (symbol ";") 'println! (symbol "(") "{}" (symbol ",") 'v (symbol ")") (symbol ";") (symbol "}")) |
|
|
|
|
['fn 'inc (symbol "(") 'v (symbol ":") (symbol "&") 'mut 'i64 (symbol ")") (symbol "{") '* 'v (symbol "+=") 1 (symbol ";") (symbol "}") 'fn 'main (symbol "(") (symbol ")") (symbol "{") 'let 'mut 'v (symbol ":") 'i64 (symbol "=") 5 (symbol ";") 'inc (symbol "(") (symbol "&") 'mut 'v] |
|
|
|
|
:sin-errores |
|
|
|
|
[[0 2] [['inc ['fn [(list ['v (symbol ":") (symbol "&") 'mut 'i64]) ()]] 2] ['main ['fn [() ()]] 6] ['v ['var-mut 'i64] 0]]] |
|
|
|
|
1 |
|
|
|
|
[['CAL 6] 'HLT ['POPARG 0] ['PUSHFI 1] ['POPADDREF 0] 'RETN ['PUSHFI 5] ['POP 0] ['PUSHADDR 0]] |
|
|
|
|
[[2 ['i64 nil]] [6 ['i64 nil]]] |
|
|
|
|
] |
|
|
|
|
)) |
|
|
|
|
) |
|
|
|
|
) |
|
|
|
|
|