summaryrefslogtreecommitdiff
path: root/src/core
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 /src/core
parente6ae3c38007df8cd139b34f88c1eaeb07f647163 (diff)
Finding some issues, as expected.
Diffstat (limited to 'src/core')
-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
5 files changed, 17 insertions, 13 deletions
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;
}