From 7bb7b8124fdcf7f9067737c4a387d5c675650a64 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Thu, 2 Dec 2021 22:22:25 +0100 Subject: Better comment system + a few bug fixes. --- .../generic/PushElementComputation.java | 2 ++ .../lang/computation/generic/SortComputation.java | 2 +- .../fate/v1/lang/instruction/generic/Clear.java | 1 + .../v1/lang/instruction/generic/Partition.java | 1 + .../v1/lang/instruction/generic/PushElement.java | 30 +++++----------------- .../fate/v1/lang/instruction/generic/Sort.java | 2 +- src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 | 2 +- .../tonkadur/wyrd/v1/compiler/util/PopElement.java | 3 ++- 8 files changed, 15 insertions(+), 28 deletions(-) diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/generic/PushElementComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/generic/PushElementComputation.java index ec11ee1..3df05ac 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/generic/PushElementComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/generic/PushElementComputation.java @@ -53,6 +53,7 @@ public class PushElementComputation extends GenericComputation final Computation collection; final boolean is_from_left; + // if (call_parameters.size() != 2) { ErrorManager.handle @@ -117,6 +118,7 @@ public class PushElementComputation extends GenericComputation final boolean is_from_left ) { + // FIXME: this should always return a list. super(origin, collection.get_type()); this.collection = collection; diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/generic/SortComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/generic/SortComputation.java index b1f9280..92bbadc 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/generic/SortComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/generic/SortComputation.java @@ -58,7 +58,7 @@ public class SortComputation extends GenericComputation origin, "(" + alias - + " <(LAMBDA INT (X))> <(LIST X)|(SET X)>)" + + " <(LAMBDA INT (X X))> <(LIST X)|(SET X)>)" ) ); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Clear.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Clear.java index 9fabde5..e5c6217 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Clear.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Clear.java @@ -95,6 +95,7 @@ public class Clear extends GenericInstruction collection = call_parameters.get(0); collection.expect_non_string(); + collection.use_as_reference(); RecurrentChecks.assert_is_a_collection(collection); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Partition.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Partition.java index 7807db5..9c1b2b6 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Partition.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Partition.java @@ -102,6 +102,7 @@ public class Partition extends GenericInstruction RecurrentChecks.assert_return_type_is(lambda_function, Type.BOOL); + collection_in.use_as_reference(); collection_out.use_as_reference(); return diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/PushElement.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/PushElement.java index 953b9d0..c987d53 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/PushElement.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/PushElement.java @@ -32,13 +32,6 @@ public class PushElement extends GenericInstruction aliases.add("list:push_right"); aliases.add("list:pushright"); aliases.add("list:pushRight"); - aliases.add("set:push_left"); - aliases.add("set:pushleft"); - aliases.add("set:pushLeft"); - aliases.add("set:push_right"); - aliases.add("set:pushright"); - aliases.add("set:pushRight"); - return aliases; } @@ -61,7 +54,7 @@ public class PushElement extends GenericInstruction new WrongNumberOfParametersException ( origin, - "(" + alias + "! <(LIST X)|(SET X) REFERENCE>)" + "(" + alias + "! <(LIST X REFERENCE>)" ) ); @@ -72,22 +65,11 @@ public class PushElement extends GenericInstruction collection = call_parameters.get(1); is_from_left = alias.endsWith("eft"); - if (alias.startsWith("set:")) - { - RecurrentChecks.propagate_expected_types_and_assert_is_a_set_of - ( - collection, - element - ); - } - else - { - RecurrentChecks.propagate_expected_types_and_assert_is_a_list_of - ( - collection, - element - ); - } + RecurrentChecks.propagate_expected_types_and_assert_is_a_list_of + ( + collection, + element + ); collection.use_as_reference(); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Sort.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Sort.java index ac2c02b..d741cba 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Sort.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Sort.java @@ -61,7 +61,7 @@ public class Sort extends GenericInstruction origin, "(" + alias - + "! <(LAMBDA INT (X))> <(LIST X)|(SET X) REFERENCE>)" + + "! <(LAMBDA INT (X X))> <(LIST X)|(SET X) REFERENCE>)" ) ); diff --git a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 index 685c11f..e0711c8 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 @@ -144,7 +144,7 @@ LAMBDA_KW: L_PAREN 'lambda' SEP+; SEQUENCE_KW: L_PAREN 'seq''uence'? SEP+; -fragment IDENTIFIER_FRAG: ~([ \t\r\n()]|'!'); +fragment IDENTIFIER_FRAG: ~([ \t\r\n()]|'!'|';'); IDENTIFIER_KW: IDENTIFIER_FRAG+; diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/PopElement.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/PopElement.java index 6a436a6..cbcd400 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/util/PopElement.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/PopElement.java @@ -58,7 +58,8 @@ public class PopElement } else { - target_index = collection_size.get_value(); + target_index = + Operation.minus(collection_size.get_value(), Constant.ONE); } result.add(new SetValue(index.get_address(), target_index)); -- cgit v1.2.3-70-g09d2