summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-12-25 14:22:32 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-12-25 14:22:32 +0100
commit48659c28bf6a6fbcff2c8e67247680afaa023de9 (patch)
tree604471791e274123c34133dc7d549781801891db /src
parentbd5fd411691410d2ddb37f108810353b725eb0b1 (diff)
Turns Wyrd's computation into the instruction.
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/computation/generic/OperationCompiler.java11
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/Shuffle.java6
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java10
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/SetRandom.java72
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java9
-rw-r--r--src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java22
6 files changed, 111 insertions, 19 deletions
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/computation/generic/OperationCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/computation/generic/OperationCompiler.java
index 3f98979..216fc2b 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/computation/generic/OperationCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/computation/generic/OperationCompiler.java
@@ -15,6 +15,7 @@ import tonkadur.wyrd.v1.lang.computation.ValueOf;
import tonkadur.wyrd.v1.lang.computation.RelativeAddress;
import tonkadur.wyrd.v1.lang.instruction.SetValue;
+import tonkadur.wyrd.v1.lang.instruction.SetRandom;
import tonkadur.wyrd.v1.lang.meta.Computation;
import tonkadur.wyrd.v1.lang.meta.Instruction;
@@ -337,10 +338,11 @@ public class OperationCompiler extends GenericComputationCompiler
push_rand.add
(
- new SetValue
+ new SetRandom
(
result_as_address,
- Operation.rand(operands.get(0), operands.get(1))
+ operands.get(0),
+ operands.get(1)
)
);
@@ -412,10 +414,11 @@ public class OperationCompiler extends GenericComputationCompiler
compiler.registers().get_rand_mode_holder().get_value(),
Constant.ZERO
),
- new SetValue
+ new SetRandom
(
result_as_address,
- Operation.rand(operands.get(0), operands.get(1))
+ operands.get(0),
+ operands.get(1)
),
tonkadur.wyrd.v1.compiler.util.IfElse.generate
(
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/Shuffle.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/Shuffle.java
index 45dbd81..5d39275 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/Shuffle.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/Shuffle.java
@@ -19,6 +19,7 @@ import tonkadur.wyrd.v1.lang.computation.ValueOf;
import tonkadur.wyrd.v1.lang.computation.Size;
import tonkadur.wyrd.v1.lang.instruction.SetValue;
+import tonkadur.wyrd.v1.lang.instruction.SetRandom;
import tonkadur.wyrd.v1.compiler.util.registers.RegisterManager;
@@ -69,10 +70,11 @@ public class Shuffle
while_body.add
(
- new SetValue
+ new SetRandom
(
target_index.get_address(),
- Operation.rand(Constant.ZERO, iterator.get_value())
+ Constant.ZERO,
+ iterator.get_value()
)
);
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java
index 93d005f..40ed37f 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java
@@ -15,7 +15,6 @@ public class Operation extends Computation
public static final String MODULO = "modulo";
public static final String PLUS = "plus";
public static final String POWER = "power";
- public static final String RAND = "rand";
public static final String TIMES = "times";
/* Logic operations ********************************************************/
@@ -80,15 +79,6 @@ public class Operation extends Computation
return new Operation(POWER, param_a.get_type(), param_a, param_b);
}
- public static Operation rand
- (
- final Computation param_a,
- final Computation param_b
- )
- {
- return new Operation(RAND, Type.INT, param_a, param_b);
- }
-
/* Logic operations ********************************************************/
public static Operation and
(
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetRandom.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetRandom.java
new file mode 100644
index 0000000..27cbe79
--- /dev/null
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetRandom.java
@@ -0,0 +1,72 @@
+package tonkadur.wyrd.v1.lang.instruction;
+
+import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
+
+public class SetRandom extends Instruction
+{
+ /***************************************************************************/
+ /**** MEMBERS **************************************************************/
+ /***************************************************************************/
+ protected final Computation target;
+ protected final Computation min, max;
+
+ /***************************************************************************/
+ /**** PUBLIC ***************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ public SetRandom
+ (
+ final Computation target,
+ final Computation min,
+ final Computation max
+ )
+ {
+ this.target = target;
+ this.min = min;
+ this.max = max;
+ }
+
+ /**** Accessors ************************************************************/
+ public Computation get_target ()
+ {
+ return target;
+ }
+
+ public Computation get_min ()
+ {
+ return min;
+ }
+
+ public Computation get_max ()
+ {
+ return max;
+ }
+
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_set_random(this);
+ }
+
+ /**** Misc. ****************************************************************/
+ @Override
+ public String toString ()
+ {
+ final StringBuilder sb;
+
+ sb = new StringBuilder();
+
+ sb.append("(SetRandom ");
+ sb.append(target.toString());
+ sb.append(" ");
+ sb.append(min.toString());
+ sb.append(" ");
+ sb.append(max.toString());
+ sb.append(")");
+
+ return sb.toString();
+ }
+}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java
index 065037f..0338625 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java
@@ -31,6 +31,12 @@ public interface InstructionVisitor
public void visit_set_pc (final SetPC n)
throws Throwable;
+ public void visit_set_random (final SetRandom n)
+ throws Throwable;
+
+ public void visit_set_value (final SetValue n)
+ throws Throwable;
+
public void visit_prompt_command (final PromptCommand n)
throws Throwable;
@@ -40,9 +46,6 @@ public interface InstructionVisitor
public void visit_prompt_string (final PromptString n)
throws Throwable;
- public void visit_set_value (final SetValue n)
- throws Throwable;
-
public void visit_initialize (final Initialize n)
throws Throwable;
}
diff --git a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java
index c23b5b1..79cb4ea 100644
--- a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java
+++ b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java
@@ -156,6 +156,27 @@ public class InstructionCompiler implements InstructionVisitor
result.put("value", cc.get_result());
}
+ public void visit_set_random (final SetRandom n)
+ throws Throwable
+ {
+ final ComputationCompiler target_cc, min_cc, max_cc;
+
+ target_cc = new ComputationCompiler();
+ min_cc = new ComputationCompiler();
+ max_cc = new ComputationCompiler();
+
+ n.get_target().get_visited_by(target_cc);
+ n.get_min().get_visited_by(min_cc);
+ n.get_max().get_visited_by(max_cc);
+
+ result = new JSONObject();
+
+ result.put("category", "set_random");
+ result.put("target", target_cc.get_result());
+ result.put("min", min_cc.get_result());
+ result.put("max", max_cc.get_result());
+ }
+
public void visit_set_value (final SetValue n)
throws Throwable
{
@@ -214,6 +235,7 @@ public class InstructionCompiler implements InstructionVisitor
result.put("label", label_cc.get_result());
}
+
public void visit_prompt_integer (final PromptInteger n)
throws Throwable
{