summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/PromptCommand.java134
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptCommand.java81
2 files changed, 215 insertions, 0 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PromptCommand.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptCommand.java
new file mode 100644
index 0000000..a7da742
--- /dev/null
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptCommand.java
@@ -0,0 +1,134 @@
+package tonkadur.fate.v1.lang.instruction;
+
+import tonkadur.parser.Origin;
+import tonkadur.parser.ParsingError;
+
+import tonkadur.fate.v1.lang.type.Type;
+import tonkadur.fate.v1.lang.type.PointerType;
+import tonkadur.fate.v1.lang.type.CollectionType;
+
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
+import tonkadur.fate.v1.lang.meta.Instruction;
+import tonkadur.fate.v1.lang.meta.Computation;
+import tonkadur.fate.v1.lang.meta.RecurrentChecks;
+
+public class PromptCommand extends Instruction
+{
+ /***************************************************************************/
+ /**** MEMBERS **************************************************************/
+ /***************************************************************************/
+ protected final Computation target;
+ protected final Computation min;
+ protected final Computation max;
+ protected final Computation label;
+
+ /***************************************************************************/
+ /**** PROTECTED ************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ protected PromptCommand
+ (
+ final Origin origin,
+ final Computation target,
+ final Computation min,
+ final Computation max,
+ final Computation label
+ )
+ {
+ super(origin);
+
+ this.target = target;
+ this.min = min;
+ this.max = max;
+ this.label = label;
+ }
+
+ /***************************************************************************/
+ /**** PUBLIC ***************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ public static PromptCommand build
+ (
+ final Origin origin,
+ final Computation target,
+ final Computation min,
+ final Computation max,
+ final Computation label
+ )
+ throws ParsingError
+ {
+ target.expect_non_string();
+ min.expect_non_string();
+ max.expect_non_string();
+ label.expect_string();
+
+ RecurrentChecks.assert_can_be_used_as(min, Type.INT);
+ RecurrentChecks.assert_can_be_used_as(max, Type.INT);
+ RecurrentChecks.assert_can_be_used_as(label, Type.TEXT);
+ RecurrentChecks.assert_can_be_used_as
+ (
+ target,
+ new PointerType
+ (
+ origin,
+ CollectionType.build
+ (
+ Origin.BASE_LANGUAGE,
+ Type.STRING,
+ false,
+ "Command list"
+ ),
+ "pointer to command list"
+ )
+ );
+
+ return new PromptCommand(origin, target, min, max, label);
+ }
+
+ /**** Accessors ************************************************************/
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_prompt_command(this);
+ }
+
+ public Computation get_target ()
+ {
+ return target;
+ }
+
+ public Computation get_max ()
+ {
+ return max;
+ }
+
+ public Computation get_min ()
+ {
+ return min;
+ }
+
+ public Computation get_label ()
+ {
+ return label;
+ }
+
+ /**** Misc. ****************************************************************/
+ @Override
+ public String toString ()
+ {
+ final StringBuilder sb = new StringBuilder();
+
+ sb.append("(PromptCommand ");
+ sb.append(target.toString());
+ sb.append(" ");
+ sb.append(min.toString());
+ sb.append(" ");
+ sb.append(max.toString());
+ sb.append(" ");
+ sb.append(label.toString());
+ sb.append(")");
+
+ return sb.toString();
+ }
+}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptCommand.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptCommand.java
new file mode 100644
index 0000000..d116caf
--- /dev/null
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/PromptCommand.java
@@ -0,0 +1,81 @@
+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 PromptCommand extends Instruction
+{
+ /***************************************************************************/
+ /**** MEMBERS **************************************************************/
+ /***************************************************************************/
+ protected final Computation target;
+ protected final Computation min, max, label;
+
+ /***************************************************************************/
+ /**** PUBLIC ***************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ public PromptCommand
+ (
+ final Computation target,
+ final Computation min,
+ final Computation max,
+ final Computation label
+ )
+ {
+ this.target = target;
+ this.min = min;
+ this.max = max;
+ this.label = label;
+ }
+
+ /**** Accessors ************************************************************/
+ public Computation get_target ()
+ {
+ return target;
+ }
+
+ public Computation get_min ()
+ {
+ return min;
+ }
+
+ public Computation get_max ()
+ {
+ return max;
+ }
+
+ public Computation get_label ()
+ {
+ return label;
+ }
+
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_prompt_command(this);
+ }
+
+ /**** Misc. ****************************************************************/
+ @Override
+ public String toString ()
+ {
+ final StringBuilder sb;
+
+ sb = new StringBuilder();
+
+ sb.append("(PromptCommand ");
+ sb.append(target.toString());
+ sb.append(" ");
+ sb.append(min.toString());
+ sb.append(" ");
+ sb.append(max.toString());
+ sb.append(" ");
+ sb.append(label.toString());
+ sb.append(")");
+
+ return sb.toString();
+ }
+}