| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/core')
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 | 


