| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-08-15 00:59:52 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-08-15 00:59:52 +0200 |
| commit | bfc060584e91398831dee85455e3df0fbbddbf57 (patch) | |
| tree | 025a7de13d2cd69f93c108f78b003a2efe0e04a1 | |
| parent | e6ae3c38007df8cd139b34f88c1eaeb07f647163 (diff) | |
Finding some issues, as expected.
| -rw-r--r-- | data/tests/collections.fate | 14 | ||||
| -rw-r--r-- | data/tests/comparisons.fate | 12 | ||||
| -rw-r--r-- | data/tests/conditionals.fate | 2 | ||||
| -rw-r--r-- | data/tests/include/data_types.fate | 70 | ||||
| -rw-r--r-- | data/tests/locales.fate | 4 | ||||
| -rw-r--r-- | data/tests/loops.fate | 22 | ||||
| -rw-r--r-- | data/tests/references.fate | 6 | ||||
| -rw-r--r-- | src/core/src/tonkadur/Main.java | 2 | ||||
| -rw-r--r-- | src/core/src/tonkadur/fate/v1/parser/FateParser.g4 | 5 | ||||
| -rw-r--r-- | src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java | 9 | ||||
| -rw-r--r-- | src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java | 5 | ||||
| -rw-r--r-- | src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java | 9 | ||||
| -rw-r--r-- | src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java | 8 | ||||
| -rw-r--r-- | src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java | 4 | ||||
| -rw-r--r-- | src/json-export/src/tonkadur/jsonexport/Translator.java | 9 |
15 files changed, 53 insertions, 128 deletions
diff --git a/data/tests/collections.fate b/data/tests/collections.fate index 1642e94..3734e5d 100644 --- a/data/tests/collections.fate +++ b/data/tests/collections.fate @@ -1,14 +1,12 @@ (fate_version 1) -(require include/data_types.fate) +(global (list int) int_list_a) +(global (list int) int_list_b) +(global (list int) int_list_c) -(declare_variable int_list int_list_a) -(declare_variable int_list int_list_b) -(declare_variable int_list int_list_c) - -(declare_variable int_set int_set_a) -(declare_variable int_set int_set_b) -(declare_variable int_set int_set_c) +(global (set int) int_set_a) +(global (set int) int_set_b) +(global (set int) int_set_c) (assert (= 0 (size (var int_list_a))) FAILED: size list A) (assert (= 0 (size (var int_set_a))) FAILED: size set A) diff --git a/data/tests/comparisons.fate b/data/tests/comparisons.fate index 68c5ed9..9a7ea82 100644 --- a/data/tests/comparisons.fate +++ b/data/tests/comparisons.fate @@ -8,13 +8,11 @@ FAILED: string comparison C ) -(declare_ptr_type int int_ptr) +(global int i) +(global (ptr int) i_ptr) -(def_var int i) -(def_var int_ptr i_ptr) - -(def_var int j) -(def_var int_ptr j_ptr) +(global int j) +(global (ptr int) j_ptr) (set i_ptr (ptr i)) (set j_ptr (ptr j)) @@ -31,7 +29,7 @@ (int b) ) -(def_var test_dict_t td) +(global test_dict_t td) (set i_ptr (ptr td.a)) (set j_ptr (ptr td.b)) diff --git a/data/tests/conditionals.fate b/data/tests/conditionals.fate index 02730c6..82168ac 100644 --- a/data/tests/conditionals.fate +++ b/data/tests/conditionals.fate @@ -101,7 +101,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; INSTRUCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(declare_variable boolean test_var) +(global boolean test_var) (set test_var (true)) (assert (var test_var) FAILED: setting test_var) diff --git a/data/tests/include/data_types.fate b/data/tests/include/data_types.fate deleted file mode 100644 index abffedb..0000000 --- a/data/tests/include/data_types.fate +++ /dev/null @@ -1,70 +0,0 @@ -(fate_version 1) - -(typedef boolean sub_boolean) -(typedef boolean alt_boolean) -(typedef sub_boolean sub_sub_boolean) -(typedef sub_boolean alt_sub_boolean) - -(typedef int sub_int) -(typedef int alt_int) -(typedef sub_int sub_sub_int) -(typedef sub_int alt_sub_int) - -(typedef float sub_float) -(typedef float alt_float) -(typedef sub_float sub_sub_float) -(typedef sub_float alt_sub_float) - -(typedef string sub_string) -(typedef string alt_string) -(typedef sub_string sub_sub_string) -(typedef sub_string alt_sub_string) - -(define_list_type boolean boolean_list) -(define_list_type sub_boolean sub_boolean_list) -(define_set_type boolean boolean_set) -(define_set_type sub_boolean sub_boolean_set) -(define_ref_type boolean boolean_ptr) -(define_ref_type sub_boolean sub_boolean_ptr) - -(define_list_type int int_list) -(define_list_type sub_int sub_int_list) -(define_set_type int int_set) -(define_set_type sub_int sub_int_set) -(define_ref_type int int_ptr) -(define_ref_type sub_int sub_int_ptr) - -(define_list_type float float_list) -(define_list_type sub_float sub_float_list) -(define_set_type float float_set) -(define_set_type sub_float sub_float_set) -(define_ref_type float float_ptr) -(define_ref_type sub_float sub_float_ptr) - -(define_list_type string string_list) -(define_list_type sub_string sub_string_list) -(define_set_type string string_set) -(define_set_type sub_string sub_string_set) -(define_ref_type string string_ptr) -(define_ref_type sub_string sub_string_ptr) - -(define_dict_type simple_dict - (boolean boolean) - (int int) - (float float) - (string string) -) - -(define_ref_type simple_dict simple_dict_ptr) -(define_list_type simple_dict_ptr simple_dict_ptr_list) -(define_set_type simple_dict_ptr simple_dict_ptr_set) - -(define_dict_type two_dict - (simple_dict dict_a) - (simple_dict dict_b) - (simple_dict_ptr dict_ptr) -) - -(define_ref_type two_dict two_dict_ptr) -(define_list_type two_dict_ptr two_dict_ptr_list) -(define_set_type two_dict_ptr two_dict_ptr_set) diff --git a/data/tests/locales.fate b/data/tests/locales.fate index 21244d8..17be7cf 100644 --- a/data/tests/locales.fate +++ b/data/tests/locales.fate @@ -2,7 +2,7 @@ 大野!私はこれらの言語を話せません! -(declare_variable int 変数) +(global int 変数) (for (set 変数 0) (< (var 変数) 10) (set 変数 (+ (var 変数) 1)) 私は数を使って数えることができます:(var 変数) @@ -10,7 +10,7 @@ أوه لا! أنا لا أتحدث أيًا من هذه اللغات! -(declare_variable int ﻢﺘﻐﻳﺭ) +(global int ﻢﺘﻐﻳﺭ) (for (set ﻢﺘﻐﻳﺭ 0) (< (var ﻢﺘﻐﻳﺭ) 10) (set ﻢﺘﻐﻳﺭ (+ (var ﻢﺘﻐﻳﺭ) 1)) لا يهم. يمكنني فقط استخدام الأرقام للعد حتى: (var ﻢﺘﻐﻳﺭ) diff --git a/data/tests/loops.fate b/data/tests/loops.fate index db7f212..47ad632 100644 --- a/data/tests/loops.fate +++ b/data/tests/loops.fate @@ -1,10 +1,8 @@ (fate_version 1) -(require include/data_types.fate) - -(declare_variable int i) -(declare_variable int test_val) -(declare_variable int test_val2) +(global int i) +(global int test_val) +(global int test_val2) (set test_val 0) (set test_val2 0) @@ -62,8 +60,8 @@ (assert (= (var test_val2) 1) FAILED: do while loop E) (assert (= (var i) 1) FAILED: do while loop F) -(declare_variable int_list int_list_a) -(declare_variable int_list int_list_b) +(global (list int) int_list_a) +(global (list int) int_list_b) (for (set i 0) (< (var i) 10) (set i (+ (var i) 1)) (add_element 1 int_list_a) @@ -74,8 +72,8 @@ (set test_val2 0) (foreach int_list_a a - (set test_val (+ (var test_val) (param a))) - (set test_val2 (+ (var test_val2) (param a))) + (set test_val (+ (var test_val) (var a))) + (set test_val2 (+ (var test_val2) (var a))) ) (assert (= (var test_val) 10) FAILED: for each loop A) (assert (= (var test_val2) 10) FAILED: for each loop B) @@ -125,9 +123,9 @@ (set test_val 0) (foreach int_list_a a - (set test_val (+ (var test_val) (param a))) + (set test_val (+ (var test_val) (var a))) (break) - (set test_val2 (+ (var test_val2) (param a))) + (set test_val2 (+ (var test_val2) (var a))) ) (assert (= (var test_val) 1) FAILED: break foreach loop A) (assert (= (var test_val2) 0) FAILED: break foreach loop B) @@ -135,7 +133,7 @@ (clear int_list_b) (foreach int_list_a a - (add_element (param a) int_list_b) + (add_element (var a) int_list_b) (for (set i 0) (< (var i) 1) (set i (+ (var i) 1)) (add_element (var i) int_list_b) ) diff --git a/data/tests/references.fate b/data/tests/references.fate index cc30154..fd9aeb3 100644 --- a/data/tests/references.fate +++ b/data/tests/references.fate @@ -1,15 +1,13 @@ (fate_version 1) -(require include/data_types.fate) - -(def_var (ptr int) alloc_i) +(global (ptr int) alloc_i) (set alloc_i (new int)) (set (at alloc_i) 2) (assert (= (at (var alloc_i)) 2) FAILED: set at A) -(def_var (ptr (ptr int)) i_ptr_ptr) +(global (ptr (ptr int)) i_ptr_ptr) (set i_ptr_ptr (ptr alloc_i)) (set (at (at i_ptr_ptr)) 4) (assert (= (at (var alloc_i)) 4) FAILED: set at B) diff --git a/src/core/src/tonkadur/Main.java b/src/core/src/tonkadur/Main.java index ea02801..62879d2 100644 --- a/src/core/src/tonkadur/Main.java +++ b/src/core/src/tonkadur/Main.java @@ -59,6 +59,8 @@ public class Main tp.post_fate_parsing(fate_world); } + fate_world.assert_sanity(); + wyrd_world = new tonkadur.wyrd.v1.lang.World(); for (final TonkadurPlugin tp: plugins) diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index fffe6a3..81b63e2 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -100,8 +100,9 @@ returns [List<Instruction> result] first_level_fate_instr: DEFINE_SEQUENCE_KW new_reference_name + WS* ( - L_PAREN WS+ variable_list WS* R_PAREN + L_PAREN WS* variable_list WS* R_PAREN { final Map<String, Variable> variable_map; @@ -817,6 +818,8 @@ returns [Instruction result] ($new_reference_name.result), ($general_fate_sequence.result) ); + + variable_map.remove(($new_reference_name.result)); } | EVENT_KW WORD WS+ value_list WS* R_PAREN diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java index 961fd10..27f382d 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java @@ -1677,6 +1677,8 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor parameter_ccs = new ArrayList<ComputationCompiler>(); parameters = new ArrayList<Computation>(); + compiler.assembler().add_fixed_name_label(n.get_sequence_name()); + for ( final tonkadur.fate.v1.lang.meta.Computation param: n.get_parameters() @@ -1737,6 +1739,8 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor parameter_ccs = new ArrayList<ComputationCompiler>(); parameters = new ArrayList<Computation>(); + compiler.assembler().add_fixed_name_label(n.get_sequence_name()); + for ( final tonkadur.fate.v1.lang.meta.Computation param: n.get_parameters() @@ -1763,7 +1767,10 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor ( compiler.registers().get_jump_to_context_instructions ( - compiler.assembler().get_label_constant(n.get_sequence_name()) + compiler.assembler().get_label_constant + ( + n.get_sequence_name() + ) ) ); diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java index 155f6d5..5607450 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java @@ -18,6 +18,7 @@ import tonkadur.wyrd.v1.lang.meta.Instruction; import tonkadur.wyrd.v1.lang.computation.Address; import tonkadur.wyrd.v1.lang.computation.RelativeAddress; import tonkadur.wyrd.v1.lang.computation.Constant; +import tonkadur.wyrd.v1.lang.computation.Cast; import tonkadur.wyrd.v1.lang.computation.ValueOf; import tonkadur.wyrd.v1.lang.computation.Size; @@ -151,7 +152,7 @@ public class RegisterManager new RelativeAddress ( pc_stack.get_address(), - new Size(pc_stack.get_address()), + new Cast(new Size(pc_stack.get_address()), Type.STRING), Type.INT ), leave_to @@ -200,7 +201,7 @@ public class RegisterManager new RelativeAddress ( pc_stack.get_address(), - new Size(pc_stack.get_address()), + new Cast(new Size(pc_stack.get_address()), Type.STRING), Type.INT ); diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java index 3327e2c..973806a 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java @@ -156,15 +156,6 @@ class StackableRegisterContext extends RegisterContext ) ); - result.add - ( - new SetValue - ( - context_stack_level.get_address(), - Operation.minus(context_stack_level.get_value(), Constant.ONE) - ) - ); - return result; } diff --git a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java index 1d3122e..3210f73 100644 --- a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java @@ -142,7 +142,7 @@ public class ComputationCompiler implements ComputationVisitor } } - public void visit_ref (final Ref n) + public void visit_address (final Address n) throws Throwable { final ComputationCompiler cc; @@ -153,12 +153,12 @@ public class ComputationCompiler implements ComputationVisitor result = new JSONObject(); - result.put("category", "ref"); + result.put("category", "address"); result.put("target_type", Translator.compile_type(n.get_type())); result.put("address", cc.get_result()); } - public void visit_relative_ref (final RelativeRef n) + public void visit_relative_address (final RelativeAddress n) throws Throwable { final ComputationCompiler cc, param_cc; @@ -171,7 +171,7 @@ public class ComputationCompiler implements ComputationVisitor result = new JSONObject(); - result.put("category", "relative_ref"); + result.put("category", "relative_address"); result.put("type", Translator.compile_type(n.get_type())); result.put("base", cc.get_result()); result.put("extra", param_cc.get_result()); diff --git a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java index 8f7913b..8376be4 100644 --- a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java @@ -103,7 +103,7 @@ public class InstructionCompiler implements InstructionVisitor cc = new ComputationCompiler(); - n.get_reference().get_visited_by(cc); + n.get_address().get_visited_by(cc); result = new JSONObject(); @@ -142,7 +142,7 @@ public class InstructionCompiler implements InstructionVisitor ref_cc = new ComputationCompiler(); val_cc = new ComputationCompiler(); - n.get_reference().get_visited_by(ref_cc); + n.get_address().get_visited_by(ref_cc); n.get_value().get_visited_by(val_cc); result = new JSONObject(); diff --git a/src/json-export/src/tonkadur/jsonexport/Translator.java b/src/json-export/src/tonkadur/jsonexport/Translator.java index cc22e7c..6d7f60e 100644 --- a/src/json-export/src/tonkadur/jsonexport/Translator.java +++ b/src/json-export/src/tonkadur/jsonexport/Translator.java @@ -10,7 +10,7 @@ import org.json.simple.JSONObject; import tonkadur.wyrd.v1.lang.World; import tonkadur.wyrd.v1.lang.type.*; -import tonkadur.wyrd.v1.lang.Variable; +import tonkadur.wyrd.v1.lang.Register; import tonkadur.wyrd.v1.lang.meta.Instruction; @@ -47,16 +47,15 @@ public class Translator for ( - final Map.Entry<String, Variable> e: - wyrd_world.get_variables().entrySet() + final Register e: wyrd_world.get_registers() ) { final JSONObject obj; obj = new JSONObject(); - obj.put("name", e.getKey()); - obj.put("type", compile_type(e.getValue().get_type())); + obj.put("name", e.get_name()); + obj.put("type", compile_type(e.get_type())); result.add(obj); } |


