summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-08 18:21:57 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-08 18:21:57 +0100
commitac0576fac5b64c34bb6bac8275882861308a51a2 (patch)
treed45cd30946aac605c7c86eff2493930320f74165 /src
parent1cefec4d67ac4dbf58aab14fac51e3671688a5f6 (diff)
More unit tests.
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g48
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java15
2 files changed, 18 insertions, 5 deletions
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
index 62f5e4b..2ea8bc4 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
@@ -3715,7 +3715,7 @@ returns [Computation result]
| FOLDL_KW
fun=non_text_value WS+
init=value WS+
- inr=value_reference WS*
+ inr=non_text_value WS*
R_PAREN
{
$result =
@@ -3737,7 +3737,7 @@ returns [Computation result]
| FOLDL_KW
fun=non_text_value WS+
init=value WS+
- inr=value_reference WS+
+ inr=non_text_value WS+
value_list WS*
R_PAREN
{
@@ -3760,7 +3760,7 @@ returns [Computation result]
| FOLDR_KW
fun=non_text_value WS+
init=value WS+
- inr=value_reference WS*
+ inr=non_text_value WS*
R_PAREN
{
$result =
@@ -3782,7 +3782,7 @@ returns [Computation result]
| FOLDR_KW
fun=non_text_value WS+
init=value WS+
- inr=value_reference WS+
+ inr=non_text_value WS+
value_list WS*
R_PAREN
{
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java
index 68166a8..620f06b 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java
@@ -41,17 +41,20 @@ public class IndexedFilterLambda
{
final List<Instruction> result, while_body, remove_instructions;
final Register iterator, index_storage, collection_size, storage;
+ final Register index_counter;
result = new ArrayList<Instruction>();
while_body = new ArrayList<Instruction>();
remove_instructions = new ArrayList<Instruction>();
iterator = registers.reserve(Type.INT, result);
+ index_counter = registers.reserve(Type.INT, result);
index_storage = registers.reserve(Type.INT, result);
collection_size = registers.reserve(Type.INT, result);
storage = registers.reserve(Type.BOOL, result);
result.add(new SetValue(iterator.get_address(), Constant.ZERO));
+ result.add(new SetValue(index_counter.get_address(), Constant.ZERO));
result.add
(
new SetValue(collection_size.get_address(), new Size(collection))
@@ -71,7 +74,7 @@ public class IndexedFilterLambda
)
);
- extra_params.add(0, iterator.get_value());
+ extra_params.add(0, index_counter.get_value());
remove_instructions.add
(
@@ -130,6 +133,15 @@ public class IndexedFilterLambda
)
);
+ while_body.add
+ (
+ new SetValue
+ (
+ index_counter.get_address(),
+ Operation.plus(index_counter.get_value(), Constant.ONE)
+ )
+ );
+
result.add
(
While.generate
@@ -147,6 +159,7 @@ public class IndexedFilterLambda
registers.release(iterator, result);
registers.release(index_storage, result);
+ registers.release(index_counter, result);
registers.release(collection_size, result);
registers.release(storage, result);