summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-07 23:59:01 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-11-07 23:59:01 +0100
commit1cefec4d67ac4dbf58aab14fac51e3671688a5f6 (patch)
tree60a60919d5a77308202e34417e2a7716aaabc416 /src
parent0b92419a57fc6a27b2701a688cf7ac3b1707241f (diff)
More unit testing...
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/IndexedFilter.java1
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g436
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/FilterLambda.java10
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java9
4 files changed, 37 insertions, 19 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/IndexedFilter.java b/src/core/src/tonkadur/fate/v1/lang/instruction/IndexedFilter.java
index e05b162..6e3da57 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/IndexedFilter.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/IndexedFilter.java
@@ -74,6 +74,7 @@ public class IndexedFilter extends Instruction
{
target_signature.add(c.get_type());
}
+
RecurrentChecks.assert_lambda_matches_types
(
lambda_function,
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
index 88601f5..62f5e4b 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
@@ -4648,6 +4648,42 @@ returns [Computation result]
);
}
+ | INDEXED_FILTER_KW fun=non_text_value WS+ coll=non_text_value WS* R_PAREN
+ {
+ $result =
+ IndexedFilterComputation.build
+ (
+ CONTEXT.get_origin_at
+ (
+ ($INDEXED_FILTER_KW.getLine()),
+ ($INDEXED_FILTER_KW.getCharPositionInLine())
+ ),
+ ($fun.result),
+ ($coll.result),
+ new ArrayList()
+ );
+ }
+
+ | INDEXED_FILTER_KW
+ fun=non_text_value WS+
+ coll=non_text_value WS+
+ value_list WS*
+ R_PAREN
+ {
+ $result =
+ IndexedFilterComputation.build
+ (
+ CONTEXT.get_origin_at
+ (
+ ($INDEXED_FILTER_KW.getLine()),
+ ($INDEXED_FILTER_KW.getCharPositionInLine())
+ ),
+ ($fun.result),
+ ($coll.result),
+ ($value_list.result)
+ );
+ }
+
| PARTITION_KW fun=non_text_value WS+ coll=non_text_value WS* R_PAREN
{
$result =
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/FilterLambda.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/FilterLambda.java
index 83c947f..6617688 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/FilterLambda.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/FilterLambda.java
@@ -29,7 +29,6 @@ public class FilterLambda
/* Utility Class */
private FilterLambda () {}
- /* Uses Durstenfeld's shuffling algorithm */
public static Instruction generate
(
final RegisterManager registers,
@@ -128,15 +127,6 @@ public class FilterLambda
)
);
- while_body.add
- (
- new SetValue
- (
- iterator.get_address(),
- Operation.plus(iterator.get_value(), Constant.ONE)
- )
- );
-
result.add
(
While.generate
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 29f08d4..68166a8 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java
@@ -130,15 +130,6 @@ public class IndexedFilterLambda
)
);
- while_body.add
- (
- new SetValue
- (
- iterator.get_address(),
- Operation.plus(iterator.get_value(), Constant.ONE)
- )
- );
-
result.add
(
While.generate