| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-11-08 18:21:57 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-11-08 18:21:57 +0100 |
| commit | ac0576fac5b64c34bb6bac8275882861308a51a2 (patch) | |
| tree | d45cd30946aac605c7c86eff2493930320f74165 /src | |
| parent | 1cefec4d67ac4dbf58aab14fac51e3671688a5f6 (diff) | |
More unit tests.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/src/tonkadur/fate/v1/parser/FateParser.g4 | 8 | ||||
| -rw-r--r-- | src/core/src/tonkadur/wyrd/v1/compiler/util/IndexedFilterLambda.java | 15 |
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); |


