summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 00:59:52 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 00:59:52 +0200
commitbfc060584e91398831dee85455e3df0fbbddbf57 (patch)
tree025a7de13d2cd69f93c108f78b003a2efe0e04a1
parente6ae3c38007df8cd139b34f88c1eaeb07f647163 (diff)
Finding some issues, as expected.
-rw-r--r--data/tests/collections.fate14
-rw-r--r--data/tests/comparisons.fate12
-rw-r--r--data/tests/conditionals.fate2
-rw-r--r--data/tests/include/data_types.fate70
-rw-r--r--data/tests/locales.fate4
-rw-r--r--data/tests/loops.fate22
-rw-r--r--data/tests/references.fate6
-rw-r--r--src/core/src/tonkadur/Main.java2
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g45
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java9
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/registers/RegisterManager.java5
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/registers/StackableRegisterContext.java9
-rw-r--r--src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java8
-rw-r--r--src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java4
-rw-r--r--src/json-export/src/tonkadur/jsonexport/Translator.java9
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);
}