summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-03 19:19:03 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-03 19:19:03 +0200
commitfc25970b2215d2f63ac26c05ca493aae2962310e (patch)
tree017d23336015dcf07ff2bbcb585f73a05eb300bb
parent4b58719598fccac6decb92ba787b40178e2f1f32 (diff)
Adds visitors to Wyrd. End instruction to Fate.
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/End.java37
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java3
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g414
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java11
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Cast.java7
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Constant.java7
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/IfElseComputation.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/New.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java10
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java9
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Ref.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/RelativeRef.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/Size.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/computation/ValueOf.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/Assert.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/Display.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/End.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/Remove.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java8
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/SetPC.java10
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/instruction/SetValue.java10
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/meta/Computation.java6
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java42
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/meta/Instruction.java5
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java33
29 files changed, 322 insertions, 2 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/End.java b/src/core/src/tonkadur/fate/v1/lang/instruction/End.java
new file mode 100644
index 0000000..e39f435
--- /dev/null
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/End.java
@@ -0,0 +1,37 @@
+package tonkadur.fate.v1.lang.instruction;
+
+import tonkadur.parser.Origin;
+
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
+import tonkadur.fate.v1.lang.meta.Instruction;
+
+public class End extends Instruction
+{
+ /***************************************************************************/
+ /**** MEMBERS **************************************************************/
+ /***************************************************************************/
+
+ /***************************************************************************/
+ /**** PUBLIC ***************************************************************/
+ /***************************************************************************/
+ /**** Constructors *********************************************************/
+ public End (final Origin origin)
+ {
+ super(origin);
+ }
+
+ /**** Accessors ************************************************************/
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_end(this);
+ }
+
+ /**** Misc. ****************************************************************/
+ @Override
+ public String toString ()
+ {
+ return "(End)";
+ }
+}
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java
index 7550895..41167bb 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java
@@ -14,6 +14,9 @@ public interface InstructionVisitor
public void visit_break (final Break n)
throws Throwable;
+ public void visit_end (final End n)
+ throws Throwable;
+
public void visit_free (final Free n)
throws Throwable;
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
index f5868fb..52722df 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
@@ -597,6 +597,20 @@ returns [Instruction result]
);
}
+ | END_KW
+ {
+ /* TODO */
+ $result =
+ new End
+ (
+ CONTEXT.get_origin_at
+ (
+ ($END_KW.getLine()),
+ ($END_KW.getCharPositionInLine())
+ )
+ );
+ }
+
| IGNORE_ERROR_KW WORD WS+ general_fate_instr WS* R_PAREN
{
/* TODO: temporarily disable an compiler error category */
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
index 6eaf4b8..b4c0e38 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java
@@ -26,6 +26,7 @@ import tonkadur.wyrd.v1.lang.computation.ValueOf;
import tonkadur.wyrd.v1.lang.instruction.AddChoice;
import tonkadur.wyrd.v1.lang.instruction.Assert;
import tonkadur.wyrd.v1.lang.instruction.Display;
+import tonkadur.wyrd.v1.lang.instruction.End;
import tonkadur.wyrd.v1.lang.instruction.EventCall;
import tonkadur.wyrd.v1.lang.instruction.Remove;
import tonkadur.wyrd.v1.lang.instruction.ResolveChoices;
@@ -1074,6 +1075,16 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor
}
@Override
+ public void visit_end
+ (
+ final tonkadur.fate.v1.lang.instruction.End n
+ )
+ throws Throwable
+ {
+ result.add(new End());
+ }
+
+ @Override
public void visit_break
(
final tonkadur.fate.v1.lang.instruction.Break n
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java
index e159b5f..30a5538 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java
@@ -5,6 +5,7 @@ import java.util.List;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class AddRichTextEffect extends RichText
{
@@ -42,6 +43,13 @@ public class AddRichTextEffect extends RichText
return effect_parameters;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_add_rich_text_effect(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Cast.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Cast.java
index 8235dfb..4c86ca8 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Cast.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Cast.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class Cast extends Computation
{
@@ -28,6 +29,12 @@ public class Cast extends Computation
return parent;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_cast(this);
+ }
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Constant.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Constant.java
index e871ecc..5b3a90e 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Constant.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Constant.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class Constant extends Computation
{
@@ -43,6 +44,12 @@ public class Constant extends Computation
return as_string;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_constant(this);
+ }
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/IfElseComputation.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/IfElseComputation.java
index 6848251..32f72e2 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/IfElseComputation.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/IfElseComputation.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class IfElseComputation extends Computation
{
@@ -47,6 +48,13 @@ public class IfElseComputation extends Computation
return if_false;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_if_else_computation(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/New.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/New.java
index 01af634..c9bcdd8 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/New.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/New.java
@@ -6,6 +6,7 @@ import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.type.PointerType;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class New extends Computation
{
@@ -31,6 +32,13 @@ public class New extends Computation
return target_type;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_new(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java
index 2cffe91..74accf3 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java
@@ -2,6 +2,8 @@ package tonkadur.wyrd.v1.lang.computation;
import java.util.ArrayList;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
+
public class Newline extends RichText
{
/***************************************************************************/
@@ -17,6 +19,14 @@ public class Newline extends RichText
super(new ArrayList());
}
+ /**** Accessors ************************************************************/
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_newline(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
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 78cac66..6806936 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Operation.java
@@ -5,6 +5,7 @@ import java.util.List;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class Operation extends Computation
{
@@ -203,6 +204,14 @@ public class Operation extends Computation
return param_b;
}
+ /**** Accessors ************************************************************/
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_operation(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Ref.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Ref.java
index 5fe62d3..7e4f3ea 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Ref.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Ref.java
@@ -4,6 +4,7 @@ import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.type.PointerType;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class Ref extends Computation
{
@@ -36,6 +37,13 @@ public class Ref extends Computation
return target_type;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_ref(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/RelativeRef.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/RelativeRef.java
index 56f8281..b37ab86 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/RelativeRef.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/RelativeRef.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class RelativeRef extends Ref
{
@@ -33,6 +34,13 @@ public class RelativeRef extends Ref
return member;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_relative_ref(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java
index 3a0d3e8..2a0a001 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java
@@ -5,6 +5,7 @@ import java.util.List;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class RichText extends Computation
{
@@ -30,6 +31,13 @@ public class RichText extends Computation
return content;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_rich_text(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/Size.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Size.java
index ff41060..4f56656 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Size.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Size.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class Size extends Computation
{
@@ -28,6 +29,13 @@ public class Size extends Computation
return collection;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_size(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/ValueOf.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/ValueOf.java
index f8abf6b..365fdf2 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/computation/ValueOf.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/ValueOf.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.computation;
import tonkadur.wyrd.v1.lang.type.Type;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.ComputationVisitor;
public class ValueOf extends Computation
{
@@ -35,6 +36,13 @@ public class ValueOf extends Computation
return parent;
}
+ @Override
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ cv.visit_value_of(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java
index f16586a..e8da2c5 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java
@@ -2,6 +2,7 @@ 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 AddChoice extends Instruction
{
@@ -32,6 +33,13 @@ public class AddChoice extends Instruction
return address;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_add_choice(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Assert.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Assert.java
index 393494c..7bfa25b 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Assert.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Assert.java
@@ -2,6 +2,7 @@ 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 Assert extends Instruction
{
@@ -25,6 +26,13 @@ public class Assert extends Instruction
return condition;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_assert(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Display.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Display.java
index 81ef31f..4f74403 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Display.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Display.java
@@ -2,6 +2,7 @@ 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 Display extends Instruction
{
@@ -25,6 +26,13 @@ public class Display extends Instruction
return content;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_display(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/End.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/End.java
index 4bfa97d..46eaa85 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/End.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/End.java
@@ -1,6 +1,7 @@
package tonkadur.wyrd.v1.lang.instruction;
import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class End extends Instruction
{
@@ -16,6 +17,13 @@ public class End extends Instruction
{
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_end(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java
index 4f27f35..221d47d 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java
@@ -4,6 +4,7 @@ import java.util.List;
import tonkadur.wyrd.v1.lang.meta.Computation;
import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class EventCall extends Instruction
{
@@ -34,6 +35,13 @@ public class EventCall extends Instruction
return parameters;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_event_call(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Remove.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Remove.java
index 28a2046..97e046b 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/Remove.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/Remove.java
@@ -3,6 +3,7 @@ package tonkadur.wyrd.v1.lang.instruction;
import tonkadur.wyrd.v1.lang.computation.Ref;
import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class Remove extends Instruction
{
@@ -26,6 +27,13 @@ public class Remove extends Instruction
return reference;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_remove(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java
index e0f13c1..27fdc79 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java
@@ -1,6 +1,7 @@
package tonkadur.wyrd.v1.lang.instruction;
import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class ResolveChoices extends Instruction
{
@@ -16,6 +17,13 @@ public class ResolveChoices extends Instruction
{
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_resolve_choices(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetPC.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetPC.java
index d02fcfd..3534bba 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetPC.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetPC.java
@@ -1,7 +1,8 @@
package tonkadur.wyrd.v1.lang.instruction;
-import tonkadur.wyrd.v1.lang.meta.Instruction;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class SetPC extends Instruction
{
@@ -25,6 +26,13 @@ public class SetPC extends Instruction
return value;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_set_pc(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetValue.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetValue.java
index 35656d7..a850094 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetValue.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/SetValue.java
@@ -2,8 +2,9 @@ package tonkadur.wyrd.v1.lang.instruction;
import tonkadur.wyrd.v1.lang.computation.Ref;
-import tonkadur.wyrd.v1.lang.meta.Instruction;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.Instruction;
+import tonkadur.wyrd.v1.lang.meta.InstructionVisitor;
public class SetValue extends Instruction
{
@@ -34,6 +35,13 @@ public class SetValue extends Instruction
return value;
}
+ @Override
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ iv.visit_set_value(this);
+ }
+
/**** Misc. ****************************************************************/
@Override
public String toString ()
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/Computation.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/Computation.java
index 8745b24..f61de47 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/meta/Computation.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/Computation.java
@@ -26,4 +26,10 @@ public abstract class Computation
{
return type;
}
+
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+ throw new Exception("Unhandled Wyrd AST Computation Node.");
+ }
}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java
new file mode 100644
index 0000000..a0e1dc1
--- /dev/null
+++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java
@@ -0,0 +1,42 @@
+package tonkadur.wyrd.v1.lang.meta;
+
+import tonkadur.wyrd.v1.lang.computation.*;
+
+public interface ComputationVisitor
+{
+ public void visit_add_rich_text_effect (final AddRichTextEffect n)
+ throws Exception;
+
+ public void visit_cast (final Cast n)
+ throws Exception;
+
+ public void visit_constant (final Constant n)
+ throws Exception;
+
+ public void visit_if_else_computation (final IfElseComputation n)
+ throws Exception;
+
+ public void visit_new (final New n)
+ throws Exception;
+
+ public void visit_newline (final Newline n)
+ throws Exception;
+
+ public void visit_operation (final Operation n)
+ throws Exception;
+
+ public void visit_ref (final Ref n)
+ throws Exception;
+
+ public void visit_relative_ref (final RelativeRef n)
+ throws Exception;
+
+ public void visit_rich_text (final RichText n)
+ throws Exception;
+
+ public void visit_size (final Size n)
+ throws Exception;
+
+ public void visit_value_of (final ValueOf n)
+ throws Exception;
+}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/Instruction.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/Instruction.java
index 5ca1859..7069736 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/meta/Instruction.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/Instruction.java
@@ -2,4 +2,9 @@ package tonkadur.wyrd.v1.lang.meta;
public abstract class Instruction
{
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+ throw new Exception("Unhandled Wyrd AST Instruction Node.");
+ }
}
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java
new file mode 100644
index 0000000..cf28ae8
--- /dev/null
+++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java
@@ -0,0 +1,33 @@
+package tonkadur.wyrd.v1.lang.meta;
+
+import tonkadur.wyrd.v1.lang.instruction.*;
+
+public interface InstructionVisitor
+{
+ public void visit_add_choice (final AddChoice n)
+ throws Exception;
+
+ public void visit_assert (final Assert n)
+ throws Exception;
+
+ public void visit_display (final Display n)
+ throws Exception;
+
+ public void visit_end (final End n)
+ throws Exception;
+
+ public void visit_event_call (final EventCall n)
+ throws Exception;
+
+ public void visit_remove (final Remove n)
+ throws Exception;
+
+ public void visit_resolve_choices (final ResolveChoices n)
+ throws Exception;
+
+ public void visit_set_pc (final SetPC n)
+ throws Exception;
+
+ public void visit_set_value (final SetValue n)
+ throws Exception;
+}