| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-09-08 22:27:22 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-09-08 22:27:22 +0200 |
| commit | cb767eaa8fb4000acd269bba851df2d6cbc10968 (patch) | |
| tree | 1931b35160e776c617797b845bc168cce3a64525 /src | |
| parent | a12e2813b03cbb1253d5105f9e8d97781ad11db7 (diff) | |
Bug fix + blackjack update.
Diffstat (limited to 'src')
6 files changed, 92 insertions, 9 deletions
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 3d60f88..9fabde5 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 @@ -76,7 +76,7 @@ public class Clear extends GenericInstruction result = new ArrayList<Instruction>(); sub_call_parameters = new ArrayList<Computation>(); - sub_call_parameters.add(sub_call_parameters.get(0)); + sub_call_parameters.add(call_parameters.get(0)); for (int i = 0; i < size_minus_one; ++i) { diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Decrement.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Decrement.java index 9f3be2e..c8800b4 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Decrement.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Decrement.java @@ -70,7 +70,7 @@ public class Decrement extends GenericInstruction result = new ArrayList<Instruction>(); sub_call_parameters = new ArrayList<Computation>(); - sub_call_parameters.add(call_parameters.get(size_minus_one)); + sub_call_parameters.add(call_parameters.get(0)); for (int i = 0; i < size_minus_one; ++i) { @@ -88,10 +88,10 @@ public class Decrement extends GenericInstruction element = call_parameters.get(0); - RecurrentChecks.assert_can_be_used_as(element, Type.INT); - element.expect_non_string(); + RecurrentChecks.assert_can_be_used_as(element, Type.INT); + element.use_as_reference(); return new Decrement(origin, element); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Increment.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Increment.java index 92e8290..8f81c88 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Increment.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Increment.java @@ -70,7 +70,7 @@ public class Increment extends GenericInstruction result = new ArrayList<Instruction>(); sub_call_parameters = new ArrayList<Computation>(); - sub_call_parameters.add(call_parameters.get(size_minus_one)); + sub_call_parameters.add(call_parameters.get(0)); for (int i = 0; i < size_minus_one; ++i) { @@ -88,10 +88,10 @@ public class Increment extends GenericInstruction element = call_parameters.get(0); - RecurrentChecks.assert_can_be_used_as(element, Type.INT); - element.expect_non_string(); + RecurrentChecks.assert_can_be_used_as(element, Type.INT); + element.use_as_reference(); return new Increment(origin, element); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/ReverseList.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/ReverseList.java index 15835e1..e71a117 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/ReverseList.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/ReverseList.java @@ -67,7 +67,7 @@ public class ReverseList extends GenericInstruction result = new ArrayList<Instruction>(); sub_call_parameters = new ArrayList<Computation>(); - sub_call_parameters.add(sub_call_parameters.get(0)); + sub_call_parameters.add(call_parameters.get(0)); for (int i = 0; i < size_minus_one; ++i) { diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Shuffle.java b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Shuffle.java index eac8434..6f3a55f 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Shuffle.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/generic/Shuffle.java @@ -66,7 +66,7 @@ public class Shuffle extends GenericInstruction result = new ArrayList<Instruction>(); sub_call_parameters = new ArrayList<Computation>(); - sub_call_parameters.add(sub_call_parameters.get(0)); + sub_call_parameters.add(call_parameters.get(0)); for (int i = 0; i < size_minus_one; ++i) { diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index 71d1d36..2aa2695 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -371,6 +371,44 @@ first_level_instruction PARSER.get_world().variables().add(new_variable); } + | DECLARE_GLOBAL_VARIABLE_KW + type WS+ + name=identifier WS+ + value=computation WS* + R_PAREN + { + final Origin start_origin, type_origin; + final Variable new_variable; + + start_origin = + PARSER.get_origin_at + ( + ($DECLARE_GLOBAL_VARIABLE_KW.getLine()), + ($DECLARE_GLOBAL_VARIABLE_KW.getCharPositionInLine()) + ); + + new_variable = + new Variable + ( + start_origin, + ($type.result), + ($name.result), + false + ); + + PARSER.get_world().variables().add(new_variable); + + PARSER.get_world().add_global_instruction + ( + SetValue.build + ( + start_origin, + new VariableReference(start_origin, new_variable), + ($value.result) + ) + ); + } + | DECLARE_EXTERNAL_VARIABLE_KW type WS+ name=identifier WS* R_PAREN { final Origin start_origin, type_origin; @@ -592,6 +630,51 @@ returns [Instruction result] $result = new LocalVariable(new_variable); } + | DECLARE_LOCAL_VARIABLE_KW + type WS+ + name=identifier WS+ + value=computation WS* + R_PAREN + { + final Origin start_origin, type_origin; + final Variable new_variable; + final Map<String, Variable> variable_map; + final List<Instruction> shorthand; + + shorthand = new ArrayList<Instruction>(); + + start_origin = + PARSER.get_origin_at + ( + ($DECLARE_LOCAL_VARIABLE_KW.getLine()), + ($DECLARE_LOCAL_VARIABLE_KW.getCharPositionInLine()) + ); + + new_variable = + new Variable + ( + start_origin, + ($type.result), + ($name.result), + false + ); + + PARSER.add_local_variable(new_variable); + + shorthand.add(new LocalVariable(new_variable)); + shorthand.add + ( + SetValue.build + ( + start_origin, + new VariableReference(start_origin, new_variable), + ($value.result) + ) + ); + + $result = new InstructionList(start_origin, shorthand); + } + /******************************************************************************/ /**** LOOPS *******************************************************************/ /******************************************************************************/ |


