summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/AtReference.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Cast.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Constant.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/CountOperator.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/FieldReference.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/IfElseValue.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/IsMemberOperator.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/MacroValueCall.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Newline.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Operation.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/ParameterReference.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/RefOperator.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/VariableReference.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/AddElement.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/Clear.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/CondInstruction.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/Display.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/IfElseInstruction.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/IfInstruction.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/InstructionList.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/MacroCall.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoice.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoiceList.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/RemoveAllOfElement.java23
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/RemoveElement.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/SequenceCall.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/instruction/SetValue.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/Computation.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java58
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/Instruction.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java55
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/Node.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/NodeVisitor.java114
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/type/CollectionType.java5
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java84
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/FateVisitor.java298
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/InstructionCompiler.java709
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/MacroManager.java50
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/BinarySearch.java4
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/IterativeSearch.java4
-rw-r--r--src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAllOf.java (renamed from src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAll.java)4
-rw-r--r--src/core/src/tonkadur/wyrd/v1/lang/World.java5
48 files changed, 604 insertions, 1019 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/AtReference.java b/src/core/src/tonkadur/fate/v1/lang/computation/AtReference.java
index 176b50c..a26d399 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/AtReference.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/AtReference.java
@@ -11,7 +11,7 @@ import tonkadur.fate.v1.error.UnknownDictionaryFieldException;
import tonkadur.fate.v1.lang.Variable;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Reference;
import tonkadur.fate.v1.lang.type.RefType;
@@ -81,10 +81,10 @@ public class AtReference extends Reference
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_at_reference(this);
+ cv.visit_at_reference(this);
}
public Reference get_parent ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
index 54b5c30..98e9746 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java
@@ -15,7 +15,7 @@ import tonkadur.fate.v1.error.IncomparableTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class Cast extends Computation
@@ -166,10 +166,10 @@ public class Cast extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_cast(this);
+ cv.visit_cast(this);
}
public Computation get_parent ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java b/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java
index e8afd21..b8f0709 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java
@@ -15,7 +15,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class CondValue extends Computation
@@ -121,10 +121,10 @@ public class CondValue extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_cond_value(this);
+ cv.visit_cond_value(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Constant.java b/src/core/src/tonkadur/fate/v1/lang/computation/Constant.java
index 56f79f1..13233bc 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Constant.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Constant.java
@@ -4,7 +4,7 @@ import tonkadur.parser.Origin;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class Constant extends Computation
@@ -81,10 +81,10 @@ public class Constant extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_constant(this);
+ cv.visit_constant(this);
}
public String get_value_as_string ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/CountOperator.java b/src/core/src/tonkadur/fate/v1/lang/computation/CountOperator.java
index 0c26abc..fe72543 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/CountOperator.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/CountOperator.java
@@ -11,7 +11,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class CountOperator extends Computation
@@ -125,10 +125,10 @@ public class CountOperator extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_count_operator(this);
+ cv.visit_count_operator(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/FieldReference.java b/src/core/src/tonkadur/fate/v1/lang/computation/FieldReference.java
index 635e372..57d4836 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/FieldReference.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/FieldReference.java
@@ -10,7 +10,7 @@ import tonkadur.error.ErrorManager;
import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.error.UnknownDictionaryFieldException;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Reference;
import tonkadur.fate.v1.lang.type.DictType;
@@ -116,10 +116,10 @@ public class FieldReference extends Reference
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_field_reference(this);
+ cv.visit_field_reference(this);
}
public String get_field_name ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/IfElseValue.java b/src/core/src/tonkadur/fate/v1/lang/computation/IfElseValue.java
index 97fe315..63adfb6 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/IfElseValue.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/IfElseValue.java
@@ -12,7 +12,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class IfElseValue extends Computation
@@ -124,10 +124,10 @@ public class IfElseValue extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_if_else_value(this);
+ cv.visit_if_else_value(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/IsMemberOperator.java b/src/core/src/tonkadur/fate/v1/lang/computation/IsMemberOperator.java
index 8e4aeb3..f7e5b57 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/IsMemberOperator.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/IsMemberOperator.java
@@ -11,7 +11,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class IsMemberOperator extends Computation
@@ -125,10 +125,10 @@ public class IsMemberOperator extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_is_member_operator(this);
+ cv.visit_is_member_operator(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/MacroValueCall.java b/src/core/src/tonkadur/fate/v1/lang/computation/MacroValueCall.java
index 83b16d4..5e4cdfd 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/MacroValueCall.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/MacroValueCall.java
@@ -19,7 +19,7 @@ import tonkadur.fate.v1.lang.Macro;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class MacroValueCall extends Computation
@@ -150,10 +150,10 @@ public class MacroValueCall extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_macro_value_call(this);
+ cv.visit_macro_value_call(this);
}
public Macro get_macro ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java b/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java
index 13b9671..9a5b880 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java
@@ -2,7 +2,7 @@ package tonkadur.fate.v1.lang.computation;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.RichTextNode;
public class Newline extends RichTextNode
@@ -18,10 +18,10 @@ public class Newline extends RichTextNode
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_newline(this);
+ cv.visit_newline(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Operation.java b/src/core/src/tonkadur/fate/v1/lang/computation/Operation.java
index 44f2a45..dfbfcb3 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Operation.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Operation.java
@@ -15,7 +15,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Computation;
public class Operation extends Computation
@@ -170,9 +170,9 @@ public class Operation extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_operation(this);
+ cv.visit_operation(this);
}
}
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java b/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java
index 0d1b8ce..62c72f3 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java
@@ -4,7 +4,7 @@ import java.util.List;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.RichTextNode;
public class Paragraph extends RichTextNode
@@ -36,10 +36,10 @@ public class Paragraph extends RichTextNode
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_paragraph(this);
+ cv.visit_paragraph(this);
}
public List<RichTextNode> get_content ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ParameterReference.java b/src/core/src/tonkadur/fate/v1/lang/computation/ParameterReference.java
index 06cf523..6266c7c 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/ParameterReference.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/ParameterReference.java
@@ -2,7 +2,7 @@ package tonkadur.fate.v1.lang.computation;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Reference;
import tonkadur.fate.v1.lang.type.Type;
@@ -29,10 +29,10 @@ public class ParameterReference extends Reference
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_parameter_reference(this);
+ cv.visit_parameter_reference(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/RefOperator.java b/src/core/src/tonkadur/fate/v1/lang/computation/RefOperator.java
index edbcc29..49f3ef6 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/RefOperator.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/RefOperator.java
@@ -4,7 +4,7 @@ import tonkadur.parser.Origin;
import tonkadur.fate.v1.lang.type.RefType;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Reference;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -32,10 +32,10 @@ public class RefOperator extends Computation
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_ref_operator(this);
+ cv.visit_ref_operator(this);
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java b/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java
index 7be47c1..df3c324 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java
@@ -18,7 +18,7 @@ import tonkadur.fate.v1.lang.TextEffect;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.RichTextNode;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -140,10 +140,10 @@ public class TextWithEffect extends RichTextNode
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_text_with_effect(this);
+ cv.visit_text_with_effect(this);
}
public TextEffect get_effect ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java
index 917f4ad..43c8371 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java
@@ -7,7 +7,7 @@ import tonkadur.fate.v1.error.IncomparableTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.RichTextNode;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -62,10 +62,10 @@ public class ValueToRichText extends RichTextNode
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_value_to_rich_text(this);
+ cv.visit_value_to_rich_text(this);
}
public Computation get_value ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/VariableReference.java b/src/core/src/tonkadur/fate/v1/lang/computation/VariableReference.java
index d8522c2..3424eed 100644
--- a/src/core/src/tonkadur/fate/v1/lang/computation/VariableReference.java
+++ b/src/core/src/tonkadur/fate/v1/lang/computation/VariableReference.java
@@ -4,7 +4,7 @@ import tonkadur.parser.Origin;
import tonkadur.fate.v1.lang.Variable;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.ComputationVisitor;
import tonkadur.fate.v1.lang.meta.Reference;
import tonkadur.fate.v1.lang.type.Type;
@@ -47,10 +47,10 @@ public class VariableReference extends Reference
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final ComputationVisitor cv)
throws Throwable
{
- nv.visit_variable_reference(this);
+ cv.visit_variable_reference(this);
}
public Variable get_variable ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/AddElement.java b/src/core/src/tonkadur/fate/v1/lang/instruction/AddElement.java
index a3ff50c..792a68f 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/AddElement.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/AddElement.java
@@ -11,7 +11,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -126,10 +126,10 @@ public class AddElement extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_add_element(this);
+ iv.visit_add_element(this);
}
public Computation get_collection ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java b/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java
index 8e7dbc5..2770fa1 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java
@@ -10,7 +10,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -65,10 +65,10 @@ public class Assert extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_assert(this);
+ iv.visit_assert(this);
}
public Computation get_condition ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/Clear.java b/src/core/src/tonkadur/fate/v1/lang/instruction/Clear.java
index e414e19..5d036fa 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/Clear.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/Clear.java
@@ -9,7 +9,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -67,10 +67,10 @@ public class Clear extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_clear(this);
+ iv.visit_clear(this);
}
public Computation get_collection ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/CondInstruction.java b/src/core/src/tonkadur/fate/v1/lang/instruction/CondInstruction.java
index 1fd1bce..15c6fa4 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/CondInstruction.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/CondInstruction.java
@@ -13,7 +13,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -71,10 +71,10 @@ public class CondInstruction extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_cond_instruction(this);
+ iv.visit_cond_instruction(this);
}
public List<Cons<Computation, Instruction>> get_branches ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java b/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java
index 24fc27d..5e95601 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java
@@ -8,7 +8,7 @@ import tonkadur.parser.Origin;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.RichTextNode;
@@ -41,10 +41,10 @@ public class Display extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_display(this);
+ iv.visit_display(this);
}
public RichTextNode get_content ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java b/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java
index e9bf5f9..887e08b 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java
@@ -18,7 +18,7 @@ import tonkadur.fate.v1.lang.Event;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -137,10 +137,10 @@ public class EventCall extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_event_call(this);
+ iv.visit_event_call(this);
}
public Event get_event ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/IfElseInstruction.java b/src/core/src/tonkadur/fate/v1/lang/instruction/IfElseInstruction.java
index c07a8d6..1fcbb01 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/IfElseInstruction.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/IfElseInstruction.java
@@ -10,7 +10,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -73,10 +73,10 @@ public class IfElseInstruction extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_if_else_instruction(this);
+ iv.visit_if_else_instruction(this);
}
public Computation get_condition ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/IfInstruction.java b/src/core/src/tonkadur/fate/v1/lang/instruction/IfInstruction.java
index 7dfe376..12a64d4 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/IfInstruction.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/IfInstruction.java
@@ -10,7 +10,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -69,10 +69,10 @@ public class IfInstruction extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_if_instruction(this);
+ iv.visit_if_instruction(this);
}
public Computation get_condition ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/InstructionList.java b/src/core/src/tonkadur/fate/v1/lang/instruction/InstructionList.java
index 658fa58..132289f 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/InstructionList.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/InstructionList.java
@@ -4,7 +4,7 @@ import java.util.List;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
public class InstructionList extends Instruction
@@ -31,10 +31,10 @@ public class InstructionList extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_instruction_list(this);
+ iv.visit_instruction_list(this);
}
public List<Instruction> get_instructions ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/MacroCall.java b/src/core/src/tonkadur/fate/v1/lang/instruction/MacroCall.java
index 3588f65..c3c3b44 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/MacroCall.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/MacroCall.java
@@ -18,7 +18,7 @@ import tonkadur.fate.v1.lang.Macro;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -137,10 +137,10 @@ public class MacroCall extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_macro_call(this);
+ iv.visit_macro_call(this);
}
public Macro get_macro ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoice.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoice.java
index fdebb80..1f40c8a 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoice.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoice.java
@@ -6,7 +6,7 @@ import tonkadur.parser.Origin;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.RichTextNode;
@@ -38,10 +38,10 @@ public class PlayerChoice extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_player_choice(this);
+ iv.visit_player_choice(this);
}
public RichTextNode get_text ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoiceList.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoiceList.java
index f9841fd..79a2570 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoiceList.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerChoiceList.java
@@ -4,7 +4,7 @@ import java.util.List;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
public class PlayerChoiceList extends Instruction
@@ -31,10 +31,10 @@ public class PlayerChoiceList extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_player_choice_list(this);
+ iv.visit_player_choice_list(this);
}
public List<Instruction> get_choices ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveAllOfElement.java b/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveAllOfElement.java
index f8568a0..0aeb614 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveAllOfElement.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveAllOfElement.java
@@ -11,9 +11,10 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+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.Reference;
public class RemoveAllOfElement extends Instruction
{
@@ -21,7 +22,7 @@ public class RemoveAllOfElement extends Instruction
/**** MEMBERS **************************************************************/
/***************************************************************************/
protected final Computation element;
- protected final Computation collection;
+ protected final Reference collection;
/***************************************************************************/
/**** PROTECTED ************************************************************/
@@ -31,7 +32,7 @@ public class RemoveAllOfElement extends Instruction
(
final Origin origin,
final Computation element,
- final Computation collection
+ final Reference collection
)
{
super(origin);
@@ -48,7 +49,7 @@ public class RemoveAllOfElement extends Instruction
(
final Origin origin,
final Computation element,
- final Computation collection
+ final Reference collection
)
throws
InvalidTypeException,
@@ -126,10 +127,20 @@ public class RemoveAllOfElement extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_remove_all_of_element(this);
+ iv.visit_remove_all_of_element(this);
+ }
+
+ public Computation get_element ()
+ {
+ return element;
+ }
+
+ public Reference get_collection ()
+ {
+ return collection;
}
/**** Misc. ****************************************************************/
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveElement.java b/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveElement.java
index d02e3b2..b067e9d 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveElement.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/RemoveElement.java
@@ -11,7 +11,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.CollectionType;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -126,10 +126,10 @@ public class RemoveElement extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_remove_element(this);
+ iv.visit_remove_element(this);
}
public Computation get_element ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/SequenceCall.java b/src/core/src/tonkadur/fate/v1/lang/instruction/SequenceCall.java
index fefe8d8..6ea696d 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/SequenceCall.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/SequenceCall.java
@@ -2,7 +2,7 @@ package tonkadur.fate.v1.lang.instruction;
import tonkadur.parser.Origin;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
public class SequenceCall extends Instruction
@@ -25,10 +25,10 @@ public class SequenceCall extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_sequence_call(this);
+ iv.visit_sequence_call(this);
}
public String get_sequence_name ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/SetValue.java b/src/core/src/tonkadur/fate/v1/lang/instruction/SetValue.java
index 0ea9a98..6a7db6f 100644
--- a/src/core/src/tonkadur/fate/v1/lang/instruction/SetValue.java
+++ b/src/core/src/tonkadur/fate/v1/lang/instruction/SetValue.java
@@ -10,7 +10,7 @@ import tonkadur.fate.v1.error.InvalidTypeException;
import tonkadur.fate.v1.lang.type.Type;
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
+import tonkadur.fate.v1.lang.meta.InstructionVisitor;
import tonkadur.fate.v1.lang.meta.Instruction;
import tonkadur.fate.v1.lang.meta.Computation;
@@ -104,10 +104,10 @@ public class SetValue extends Instruction
/**** Accessors ************************************************************/
@Override
- public void visit (final NodeVisitor nv)
+ public void get_visited_by (final InstructionVisitor iv)
throws Throwable
{
- nv.visit_set_value(this);
+ iv.visit_set_value(this);
}
public Computation get_value ()
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java b/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java
index f7dbcd3..67aaa52 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java
@@ -26,6 +26,12 @@ public abstract class Computation extends Node
/**** PUBLIC ***************************************************************/
/***************************************************************************/
/**** Accessors ************************************************************/
+ public void get_visited_by (final ComputationVisitor cv)
+ throws Throwable
+ {
+
+ }
+
public Type get_type ()
{
return type;
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java
new file mode 100644
index 0000000..9223c7b
--- /dev/null
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java
@@ -0,0 +1,58 @@
+package tonkadur.fate.v1.lang.meta;
+
+import tonkadur.fate.v1.lang.computation.*;
+
+public interface ComputationVisitor
+{
+ public void visit_at_reference (final AtReference n)
+ throws Throwable;
+
+ public void visit_cast (final Cast n)
+ throws Throwable;
+
+ public void visit_cond_value (final CondValue n)
+ throws Throwable;
+
+ public void visit_constant (final Constant n)
+ throws Throwable;
+
+ public void visit_count_operator (final CountOperator n)
+ throws Throwable;
+
+ public void visit_field_reference (final FieldReference n)
+ throws Throwable;
+
+ public void visit_if_else_value (final IfElseValue n)
+ throws Throwable;
+
+ public void visit_is_member_operator (final IsMemberOperator n)
+ throws Throwable;
+
+ public void visit_macro_value_call (final MacroValueCall n)
+ throws Throwable;
+
+ public void visit_newline (final Newline n)
+ throws Throwable;
+
+ public void visit_operation (final Operation n)
+ throws Throwable;
+
+ public void visit_paragraph (final Paragraph n)
+ throws Throwable;
+
+ public void visit_parameter_reference (final ParameterReference n)
+ throws Throwable;
+
+ public void visit_ref_operator (final RefOperator n)
+ throws Throwable;
+
+ public void visit_text_with_effect (final TextWithEffect n)
+ throws Throwable;
+
+ public void visit_value_to_rich_text (final ValueToRichText n)
+ throws Throwable;
+
+ public void visit_variable_reference (final VariableReference n)
+ throws Throwable;
+
+}
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/Instruction.java b/src/core/src/tonkadur/fate/v1/lang/meta/Instruction.java
index f77206a..457c355 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/Instruction.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/Instruction.java
@@ -29,6 +29,12 @@ public abstract class Instruction extends Node
/**** PUBLIC ***************************************************************/
/***************************************************************************/
/**** Accessors ************************************************************/
+ public void get_visited_by (final InstructionVisitor iv)
+ throws Throwable
+ {
+
+ }
+
public void link_parent (final Instruction parent)
{
parent.child = this;
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java
new file mode 100644
index 0000000..5f78fc0
--- /dev/null
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java
@@ -0,0 +1,55 @@
+package tonkadur.fate.v1.lang.meta;
+
+import tonkadur.fate.v1.lang.instruction.*;
+
+public interface InstructionVisitor
+{
+ /* Instruction Nodes */
+ public void visit_add_element (final AddElement ae)
+ throws Throwable;
+
+ public void visit_assert (final Assert a)
+ throws Throwable;
+
+ public void visit_clear (final Clear c)
+ throws Throwable;
+
+ public void visit_cond_instruction (final CondInstruction ci)
+ throws Throwable;
+
+ public void visit_display (final Display n)
+ throws Throwable;
+
+ public void visit_event_call (final EventCall n)
+ throws Throwable;
+
+ public void visit_if_else_instruction (final IfElseInstruction n)
+ throws Throwable;
+
+ public void visit_if_instruction (final IfInstruction n)
+ throws Throwable;
+
+ public void visit_instruction_list (final InstructionList n)
+ throws Throwable;
+
+ public void visit_macro_call (final MacroCall n)
+ throws Throwable;
+
+ public void visit_player_choice (final PlayerChoice n)
+ throws Throwable;
+
+ public void visit_player_choice_list (final PlayerChoiceList n)
+ throws Throwable;
+
+ public void visit_remove_all_of_element (final RemoveAllOfElement n)
+ throws Throwable;
+
+ public void visit_remove_element (final RemoveElement n)
+ throws Throwable;
+
+ public void visit_sequence_call (final SequenceCall n)
+ throws Throwable;
+
+ public void visit_set_value (final SetValue n)
+ throws Throwable;
+}
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/Node.java b/src/core/src/tonkadur/fate/v1/lang/meta/Node.java
index 86299b8..e5317d9 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/Node.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/Node.java
@@ -22,12 +22,6 @@ public abstract class Node
/**** PUBLIC ***************************************************************/
/***************************************************************************/
/**** Accessors ************************************************************/
- public void visit (final NodeVisitor nv)
- throws Throwable
- {
-
- }
-
public Origin get_origin ()
{
return origin;
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/NodeVisitor.java b/src/core/src/tonkadur/fate/v1/lang/meta/NodeVisitor.java
deleted file mode 100644
index f294da5..0000000
--- a/src/core/src/tonkadur/fate/v1/lang/meta/NodeVisitor.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package tonkadur.fate.v1.lang.meta;
-
-import tonkadur.fate.v1.lang.World;
-
-import tonkadur.fate.v1.lang.instruction.*;
-import tonkadur.fate.v1.lang.computation.*;
-
-public interface NodeVisitor
-{
- public void visit_world (final World w)
- throws Throwable;
-
- /* Instruction Nodes */
- public void visit_add_element (final AddElement ae)
- throws Throwable;
-
- public void visit_assert (final Assert a)
- throws Throwable;
-
- public void visit_clear (final Clear c)
- throws Throwable;
-
- public void visit_cond_instruction (final CondInstruction ci)
- throws Throwable;
-
- public void visit_display (final Display n)
- throws Throwable;
-
- public void visit_event_call (final EventCall n)
- throws Throwable;
-
- public void visit_if_else_instruction (final IfElseInstruction n)
- throws Throwable;
-
- public void visit_if_instruction (final IfInstruction n)
- throws Throwable;
-
- public void visit_instruction_list (final InstructionList n)
- throws Throwable;
-
- public void visit_macro_call (final MacroCall n)
- throws Throwable;
-
- public void visit_player_choice (final PlayerChoice n)
- throws Throwable;
-
- public void visit_player_choice_list (final PlayerChoiceList n)
- throws Throwable;
-
- public void visit_remove_all_of_element (final RemoveAllOfElement n)
- throws Throwable;
-
- public void visit_remove_element (final RemoveElement n)
- throws Throwable;
-
- public void visit_sequence_call (final SequenceCall n)
- throws Throwable;
-
- public void visit_set_value (final SetValue n)
- throws Throwable;
-
- /* Valued Nodes */
- public void visit_at_reference (final AtReference n)
- throws Throwable;
-
- public void visit_cast (final Cast n)
- throws Throwable;
-
- public void visit_cond_value (final CondValue n)
- throws Throwable;
-
- public void visit_constant (final Constant n)
- throws Throwable;
-
- public void visit_count_operator (final CountOperator n)
- throws Throwable;
-
- public void visit_field_reference (final FieldReference n)
- throws Throwable;
-
- public void visit_if_else_value (final IfElseValue n)
- throws Throwable;
-
- public void visit_is_member_operator (final IsMemberOperator n)
- throws Throwable;
-
- public void visit_macro_value_call (final MacroValueCall n)
- throws Throwable;
-
- public void visit_newline (final Newline n)
- throws Throwable;
-
- public void visit_operation (final Operation n)
- throws Throwable;
-
- public void visit_paragraph (final Paragraph n)
- throws Throwable;
-
- public void visit_parameter_reference (final ParameterReference n)
- throws Throwable;
-
- public void visit_ref_operator (final RefOperator n)
- throws Throwable;
-
- public void visit_text_with_effect (final TextWithEffect n)
- throws Throwable;
-
- public void visit_value_to_rich_text (final ValueToRichText n)
- throws Throwable;
-
- public void visit_variable_reference (final VariableReference n)
- throws Throwable;
-
-}
diff --git a/src/core/src/tonkadur/fate/v1/lang/type/CollectionType.java b/src/core/src/tonkadur/fate/v1/lang/type/CollectionType.java
index f25f3f7..830cd03 100644
--- a/src/core/src/tonkadur/fate/v1/lang/type/CollectionType.java
+++ b/src/core/src/tonkadur/fate/v1/lang/type/CollectionType.java
@@ -59,6 +59,11 @@ public class CollectionType extends Type
return content_type;
}
+ public boolean is_set ()
+ {
+ return is_set;
+ }
+
/**** Compatibility ********************************************************/
@Override
public boolean can_be_used_as (final Type t)
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
index 817403e..ebfc865 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/ComputationCompiler.java
@@ -1,34 +1,49 @@
package tonkadur.wyrd.v1.compiler.fate.v1;
+import java.util.List;
+import java.util.ArrayList;
+
import tonkadur.error.Error;
import tonkadur.wyrd.v1.lang.meta.Computation;
+import tonkadur.wyrd.v1.lang.meta.Instruction;
+
+import tonkadur.wyrd.v1.lang.computation.Ref;
+import tonkadur.wyrd.v1.lang.computation.ValueOf;
import tonkadur.wyrd.v1.lang.World;
-public class ComputationCompiler extends FateVisitor
+import tonkadur.wyrd.v1.compiler.util.AnonymousVariableManager;
+
+public class ComputationCompiler
+implements tonkadur.fate.v1.lang.meta.ComputationVisitor
{
protected final MacroManager macro_manager;
protected final AnonymousVariableManager anonymous_variables;
protected final World wyrd_world;
protected final List<Instruction> pre_computation_instructions;
protected final List<Ref> allocated_variables;
- protected Computation result;
+ protected final boolean expect_ref;
+ protected Computation result_as_computation;
+ protected Ref result_as_ref;
public ComputationCompiler
(
final MacroManager macro_manager,
final AnonymousVariableManager anonymous_variables,
- final World wyrd_world
+ final World wyrd_world,
+ final boolean expect_ref
)
{
this.macro_manager = macro_manager;
this.anonymous_variables = anonymous_variables;
this.wyrd_world = wyrd_world;
+ this.expect_ref = expect_ref;
allocated_variables = new ArrayList<Ref>();
pre_computation_instructions = new ArrayList<Instruction>();
- result = null;
+ result_as_ref = null;
+ result_as_computation = null;
}
public List<Instruction> get_pre_instructions ()
@@ -38,7 +53,32 @@ public class ComputationCompiler extends FateVisitor
public Computation get_computation ()
{
- return result;
+ if (result_as_computation != null)
+ {
+ return result_as_computation;
+ }
+ else
+ {
+ result_as_computation = new ValueOf(result_as_ref);
+
+ return result_as_computation;
+ }
+ }
+
+ public Ref get_ref ()
+ {
+ return result_as_ref;
+ }
+
+ protected void generate_ref ()
+ {
+ final Ref result;
+
+ result = anonymous_variables.reserve(result_as_computation.get_type());
+
+ allocated_variables.add(result);
+
+ result_as_ref = result;
}
public void free_anonymous_variables ()
@@ -56,7 +96,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -66,7 +106,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -76,7 +116,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -86,7 +126,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -96,7 +136,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -106,7 +146,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -116,7 +156,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -126,7 +166,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -136,7 +176,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -146,7 +186,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -156,7 +196,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -166,7 +206,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -176,7 +216,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -186,7 +226,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -196,7 +236,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -206,7 +246,7 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
@Override
@@ -216,6 +256,6 @@ public class ComputationCompiler extends FateVisitor
)
throws Throwable
{
- throw new UnhandledASTElementException();
+ /* TODO: implement */
}
}
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/FateVisitor.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/FateVisitor.java
deleted file mode 100644
index f6af43d..0000000
--- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/FateVisitor.java
+++ /dev/null
@@ -1,298 +0,0 @@
-package tonkadur.wyrd.v1.compiler.fate.v1;
-
-import tonkadur.wyrd.v1.error.UnhandledASTElementException;
-
-import tonkadur.fate.v1.lang.meta.NodeVisitor;
-
-public abstract class FateVisitor implements NodeVisitor
-{
- /* Instruction Nodes */
- public void visit_add_element
- (
- final tonkadur.fate.v1.lang.instruction.AddElement ae
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_assert (final tonkadur.fate.v1.lang.instruction.Assert a)
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_clear (final tonkadur.fate.v1.lang.instruction.Clear c)
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_cond_instruction
- (
- final tonkadur.fate.v1.lang.instruction.CondInstruction ci
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_display (final tonkadur.fate.v1.lang.instruction.Display n)
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_event_call
- (
- final tonkadur.fate.v1.lang.instruction.EventCall n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_if_else_instruction
- (
- final tonkadur.fate.v1.lang.instruction.IfElseInstruction n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_if_instruction
- (
- final tonkadur.fate.v1.lang.instruction.IfInstruction n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_instruction_list
- (
- final tonkadur.fate.v1.lang.instruction.InstructionList n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_macro_call
- (
- final tonkadur.fate.v1.lang.instruction.MacroCall n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_player_choice
- (
- final tonkadur.fate.v1.lang.instruction.PlayerChoice n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_player_choice_list
- (
- final tonkadur.fate.v1.lang.instruction.PlayerChoiceList n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_remove_all_of_element
- (
- final tonkadur.fate.v1.lang.instruction.RemoveAllOfElement n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_remove_element
- (
- final tonkadur.fate.v1.lang.instruction.RemoveElement n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_sequence_call
- (
- final tonkadur.fate.v1.lang.instruction.SequenceCall n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_set_value
- (
- final tonkadur.fate.v1.lang.instruction.SetValue n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- /* Valued Nodes */
- public void visit_at_reference
- (
- final tonkadur.fate.v1.lang.computation.AtReference n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_cast
- (
- final tonkadur.fate.v1.lang.computation.Cast n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_cond_value
- (
- final tonkadur.fate.v1.lang.computation.CondValue n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_constant
- (
- final tonkadur.fate.v1.lang.computation.Constant n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_count_operator
- (
- final tonkadur.fate.v1.lang.computation.CountOperator n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_field_reference
- (
- final tonkadur.fate.v1.lang.computation.FieldReference n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_if_else_value
- (
- final tonkadur.fate.v1.lang.computation.IfElseValue n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_is_member_operator
- (
- final tonkadur.fate.v1.lang.computation.IsMemberOperator n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_macro_value_call
- (
- final tonkadur.fate.v1.lang.computation.MacroValueCall n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_newline
- (
- final tonkadur.fate.v1.lang.computation.Newline n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_operation
- (
- final tonkadur.fate.v1.lang.computation.Operation n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_paragraph
- (
- final tonkadur.fate.v1.lang.computation.Paragraph n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_parameter_reference
- (
- final tonkadur.fate.v1.lang.computation.ParameterReference n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_ref_operator
- (
- final tonkadur.fate.v1.lang.computation.RefOperator n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_text_with_effect
- (
- final tonkadur.fate.v1.lang.computation.TextWithEffect n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_value_to_rich_text
- (
- final tonkadur.fate.v1.lang.computation.ValueToRichText n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-
- public void visit_variable_reference
- (
- final tonkadur.fate.v1.lang.computation.VariableReference n
- )
- throws Throwable
- {
- throw new UnhandledASTElementException();
- }
-}
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 d9162bd..914a836 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
@@ -33,13 +33,19 @@ import tonkadur.wyrd.v1.lang.instruction.IfElseInstruction;
import tonkadur.wyrd.v1.lang.instruction.NOP;
import tonkadur.wyrd.v1.lang.instruction.Remove;
import tonkadur.wyrd.v1.lang.instruction.ResolveChoices;
+import tonkadur.wyrd.v1.lang.instruction.SequenceCall;
import tonkadur.wyrd.v1.lang.instruction.SetValue;
import tonkadur.wyrd.v1.lang.instruction.While;
-import tonkadur.wyrd.v1.compiler.util.BinarySearch;
import tonkadur.wyrd.v1.compiler.util.AnonymousVariableManager;
+import tonkadur.wyrd.v1.compiler.util.BinarySearch;
+import tonkadur.wyrd.v1.compiler.util.InsertAt;
+import tonkadur.wyrd.v1.compiler.util.IterativeSearch;
+import tonkadur.wyrd.v1.compiler.util.RemoveAllOf;
+import tonkadur.wyrd.v1.compiler.util.RemoveAt;
-public class InstructionCompiler extends FateVisitor
+public class InstructionCompiler
+implements tonkadur.fate.v1.lang.meta.InstructionVisitor
{
protected final AnonymousVariableManager anonymous_variables;
protected final World wyrd_world;
@@ -78,14 +84,18 @@ public class InstructionCompiler extends FateVisitor
return result;
}
- protected ComputationCompiler new_computation_compiler ()
+ protected ComputationCompiler new_computation_compiler
+ (
+ final boolean expect_ref
+ )
{
return
new ComputationCompiler
(
macro_manager,
anonymous_variables,
- wyrd_world
+ wyrd_world,
+ expect_ref
);
}
@@ -135,16 +145,16 @@ public class InstructionCompiler extends FateVisitor
* <insert_at ...>
* )
*/
+ /*
final Ref element_as_ref, collection_as_ref, collection_size_as_ref;
final Ref element_found, element_index, collection_size, next_index;
final ComputationCompiler element_compiler, reference_compiler;
final Type element_type;
final List<Instruction> while_body, else_branch;
- /**** Getting the Element as a ref ****/
- element_compiler = new_computation_compiler();
+ element_compiler = new_computation_compiler(false);
- ae.get_element().visit(element_compiler);
+ ae.get_element().get_visited_by(element_compiler);
result.addAll(element_compiler.get_pre_instructions());
@@ -157,21 +167,14 @@ public class InstructionCompiler extends FateVisitor
new SetValue(element_as_ref, element_compiler.get_computation())
);
- /**** Getting the Collection as a ref ****/
- reference_compiler = new_computation_compiler();
+ reference_compiler = new_computation_compiler(true);
- ae.get_collection().visit(reference_compiler);
+ ae.get_collection().get_visited_by(reference_compiler);
result.addAll(reference_compiler.get_pre_instructions());
- if (!(reference_compiler.get_computation() instanceof Ref))
- {
- /* TODO: error. */
- }
-
- collection_as_ref = (Ref) reference_compiler.get_computation();
+ collection_as_ref = reference_compiler.get_ref();
- /**** Finding the element in the collection ****/
element_found = anonymous_variable.reserve(Type.BOOLEAN);
element_index = anonymous_variable.reserve(Type.INT);
collection_size = anonymous_variable.reserve(Type.INT);
@@ -309,6 +312,7 @@ public class InstructionCompiler extends FateVisitor
reference_compiler.free_anonymous_variables();
element_compiler.free_anonymous_variables();
+ */
}
protected void add_element_to_list
@@ -330,20 +334,15 @@ public class InstructionCompiler extends FateVisitor
final Ref collection_as_ref;
final ComputationCompiler element_compiler, reference_compiler;
- element_compiler = new_computation_compiler();
+ element_compiler = new_computation_compiler(false);
- ae.get_element().visit(element_compiler);
+ ae.get_element().get_visited_by(element_compiler);
- reference_compiler = new_computation_compiler();
+ reference_compiler = new_computation_compiler(true);
- ae.get_collection().visit(reference_compiler);
+ ae.get_collection().get_visited_by(reference_compiler);
- if (!(reference_compiler.get_computation() instanceof Ref))
- {
- /* TODO: error. */
- }
-
- collection_as_ref = (Ref) reference_compiler.get_computation();
+ collection_as_ref = reference_compiler.get_ref();
result.addAll(reference_compiler.get_pre_instructions());
result.addAll(element_compiler.get_pre_instructions());
@@ -358,10 +357,11 @@ public class InstructionCompiler extends FateVisitor
(
new Cast
(
- new Size(reference_compiler.get_computation()),
+ new Size(collection_as_ref),
Type.STRING
)
- )
+ ),
+ element_compiler.get_computation().get_type()
),
element_compiler.get_computation()
)
@@ -415,9 +415,9 @@ public class InstructionCompiler extends FateVisitor
*/
final ComputationCompiler cc;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
- a.get_condition().visit(cc);
+ a.get_condition().get_visited_by(cc);
result.addAll(cc.get_pre_instructions());
result.add(new Assert(cc.get_computation()));
@@ -435,24 +435,20 @@ public class InstructionCompiler extends FateVisitor
* Wyrd:
* <clear collection>
*/
+ /*
final ComputationCompiler reference_compiler;
final Ref iterator, collection_ref;
final List<Instruction> while_body;
- reference_compiler = new_computation_compiler();
+ reference_compiler = new_computation_compiler(true);
- c.get_collection().visit(reference_compiler);
+ c.get_collection().get_visited_by(reference_compiler);
result.addAll(reference_compiler.get_pre_instructions());
iterator = anonymous_variables.reserve(Type.INT);
- if (!(reference_compiler.get_computation() instanceof Ref))
- {
- /* TODO: error. */
- }
-
- collection_ref = (Ref) reference_compiler.get_computation();
+ collection_ref = reference_compiler.get_ref();
while_body.add
(
@@ -493,6 +489,7 @@ public class InstructionCompiler extends FateVisitor
anonymous_variables.release(iterator);
reference_compiler.free_anonymous_variables();
+ */
}
@Override
@@ -527,7 +524,7 @@ public class InstructionCompiler extends FateVisitor
List<Instruction> previous_else_branch;
List<Instruction> current_else_branch;
- previous_else_branch = results;
+ previous_else_branch = result;
for
(
@@ -544,9 +541,9 @@ public class InstructionCompiler extends FateVisitor
current_else_branch = new ArrayList<Instruction>();
ic = new_instruction_compiler();
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
- branch.get_car().visit(cc);
+ branch.get_car().get_visited_by(cc);
previous_else_branch.addAll(cc.get_pre_instructions());
previous_else_branch.add
@@ -564,7 +561,7 @@ public class InstructionCompiler extends FateVisitor
cc.free_anonymous_variables();
}
- previous_else_branch.add(Collections.singleton(new NOP()));
+ previous_else_branch.add(new NOP());
}
@Override
@@ -578,12 +575,12 @@ public class InstructionCompiler extends FateVisitor
*/
final ComputationCompiler cc;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
- n.get_content.visit(cc);
+ n.get_content().get_visited_by(cc);
result.addAll(cc.get_pre_instructions());
- result.add(new Display(cc.get_computation()));
+ result.add(new Display(Collections.singletonList(cc.get_computation())));
cc.free_anonymous_variables();
}
@@ -614,9 +611,9 @@ public class InstructionCompiler extends FateVisitor
{
final ComputationCompiler cc;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
- fate_computation.visit(cc);
+ fate_computation.get_visited_by(cc);
result.addAll(cc.get_pre_instructions());
@@ -624,10 +621,7 @@ public class InstructionCompiler extends FateVisitor
parameters.add(cc.get_computation());
}
- result.add
- (
- new EventCall(n.get_event().get_name(), cc.get_computation())
- );
+ result.add(new EventCall(n.get_event().get_name(), parameters));
for (final ComputationCompiler cc: cc_list)
{
@@ -651,13 +645,13 @@ public class InstructionCompiler extends FateVisitor
final InstructionCompiler if_true_ic;
final InstructionCompiler if_false_ic;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
if_true_ic = new_instruction_compiler();
if_false_ic = new_instruction_compiler();
- n.get_condition.visit(cc);
- n.get_if_true().visit(if_true_ic);
- n.get_if_false().visit(if_false_ic);
+ n.get_condition().get_visited_by(cc);
+ n.get_if_true().get_visited_by(if_true_ic);
+ n.get_if_false().get_visited_by(if_false_ic);
result.addAll(cc.get_pre_instructions());
result.add
@@ -688,11 +682,11 @@ public class InstructionCompiler extends FateVisitor
final ComputationCompiler cc;
final InstructionCompiler if_true_ic;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
if_true_ic = new_instruction_compiler();
- n.get_condition.visit(cc);
- n.get_if_true().visit(if_true_ic);
+ n.get_condition().get_visited_by(cc);
+ n.get_if_true().get_visited_by(if_true_ic);
result.addAll(cc.get_pre_instructions());
result.add
@@ -723,14 +717,14 @@ public class InstructionCompiler extends FateVisitor
for
(
final tonkadur.fate.v1.lang.meta.Instruction fate_instruction:
- n.get_content()
+ n.get_instructions()
)
{
final InstructionCompiler ic;
ic = new_instruction_compiler();
- fate_instruction.visit(ic);
+ fate_instruction.get_visited_by(ic);
result.addAll(ic.get_result());
}
@@ -748,12 +742,11 @@ public class InstructionCompiler extends FateVisitor
*
* Wyrd <content of macro with c0 ... cn>
*/
- final tonkadur.fate.v1.lang.meta.Instruction fate_macro_root;
final List<ComputationCompiler> cc_list;
- final List<Computation> parameters;
+ final List<Ref> parameters;
cc_list = new ArrayList<ComputationCompiler>();
- parameters = new ArrayList<Computation>();
+ parameters = new ArrayList<Ref>();
for
(
@@ -763,27 +756,24 @@ public class InstructionCompiler extends FateVisitor
{
final ComputationCompiler cc;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(true);
- fate_computation.visit(cc);
+ fate_computation.get_visited_by(cc);
result.addAll(cc.get_pre_instructions());
cc_list.add(cc);
- parameters.add(cc.get_computation());
+ parameters.add(cc.get_ref());
}
- fate_macro_root =
- macro_manager.push_context(n.get_name(), cc.get_computation());
-
- fate_macro_root.visit(this);
+ macro_manager.push(n.get_macro(), parameters);
+ n.get_macro().get_root().get_visited_by(this);
+ macro_manager.pop();
for (final ComputationCompiler cc: cc_list)
{
cc.free_anonymous_variables();
}
-
- macro_manager.pop_context();
}
@Override
@@ -801,10 +791,10 @@ public class InstructionCompiler extends FateVisitor
final ComputationCompiler cc;
final InstructionCompiler ic;
- cc = new_computation_compiler();
+ cc = new_computation_compiler(false);
ic = new_instruction_compiler();
- n.get_text().visit(cc);
+ n.get_text().get_visited_by(cc);
result.addAll(cc.get_pre_instructions());
@@ -814,7 +804,7 @@ public class InstructionCompiler extends FateVisitor
n.get_effects()
)
{
- fate_instruction.visit(ic);
+ fate_instruction.get_visited_by(ic);
}
result.add(new AddChoice(cc.get_computation(), ic.get_result()));
@@ -844,10 +834,10 @@ public class InstructionCompiler extends FateVisitor
n.get_choices()
)
{
- fate_instruction.visit(this);
+ fate_instruction.get_visited_by(this);
}
- fate_instruction.add(new ResolveChoices());
+ result.add(new ResolveChoices());
}
@Override
@@ -862,228 +852,121 @@ public class InstructionCompiler extends FateVisitor
* (remove_all_of element collection)
*
* Wyrd:
- * (declare_variable int .index)
- * (declare_variable int .limit)
* (declare_variable <element_type> .elem)
- * (declare_variable int .found)
- * (set .index 0)
- * (set .limit (- (size collection) 1))
- * (set .elem element) ;; avoid re-computing element
- * (set .found 0)
- * (while (< .index .limit)
- * (ifelse (= (var .found) 0)
- * (
- * (nop)
- * )
- * (
- * (ifelse (= (var .elem) (var collection[.index]))
- * (set .found (+ (var .found) 1))
- * (nop)
- * )
- * (set
- * collection[.index]
- * (var collection[(+ (var .index) (var .found))])
- * )
- * )
+ * (declare_variable int .collection_size)
+ *
+ * (set .elem element)
+ * (set .collection_size (size collection))
+ *
+ * <if collection is a list:
+ * <remove_all (var .elem) (var .collection_size) collection>
+ * >
+ * <if collection is a set:
+ * (declare_variable bool .found)
+ * (declare_variable int .index)
+ *
+ * <binary_search
+ * (var .elem)
+ * (var .collection_size)
+ * collection
+ * .found
+ * .index
+ * >
+ * (ifelse (var .found)
+ * <remove_at (var .index) (var .collection_size) collection>
+ * (nop)
* )
- * (set .index (+ (var .index) 1))
- * )
- * (while (> (var .found) 0)
- * (set .found (- (var .found) 1))
- * (remove collection[(- (var .limit) (var .found))])
- * )
+ * >
*/
final ComputationCompiler elem_cc, collection_cc;
- final Ref index, limit, elem, found;
- final Ref collection_as_ref;
- final List<Instruction> while_body, while_body2, if_false_body;
+ final Ref elem, collection_size, collection;
- elem_cc = new_computation_compiler();
- collection_cc = new_computation_compiler();
+ elem_cc = new_computation_compiler(false);
+ collection_cc = new_computation_compiler(true);
- while_body = new ArrayList<Instruction>();
- while_body2 = new ArrayList<Instruction>();
- if_false_body = new ArrayList<Instruction>();
+ elem = anonymous_variables.reserve(elem_cc.get_computation().get_type());
+ collection_size = anonymous_variables.reserve(Type.INT);
- /* Get element with a minimum of anonymous variables */
- n.get_element().visit(elem_cc);
+ n.get_element().get_visited_by(elem_cc);
+ n.get_collection().get_visited_by(collection_cc);
result.addAll(elem_cc.get_pre_instructions());
+ result.addAll(collection_cc.get_pre_instructions());
- elem = anonymous_variable.reserve(elem_cc.get_computation().get_type());
+ collection = collection_cc.get_ref();
result.add(new SetValue(elem, elem_cc.get_computation()));
+ result.add(new SetValue(collection_size, new Size(collection)));
elem_cc.free_anonymous_variables();
- /****/
-
- n.get_collection().visit(collection_cc);
- if (!(collection_cc.get_computation() instanceof Ref))
+ if
+ (
+ (
+ (tonkadur.fate.v1.lang.type.CollectionType)
+ n.get_collection().get_type()
+ ).is_set()
+ )
{
- /* TODO: error. */
- }
+ final Computation value_of_elem, value_of_collection_size;
+ final Ref index, found;
- result.addAll(collection_cc.get_pre_instructions());
-
- collection_as_ref = (Ref) collection_cc.get_computation();
+ index = anonymous_variables.reserve(Type.INT);
+ found = anonymous_variables.reserve(Type.BOOLEAN);
- index = anonymous_variable.reserve(Type.INT);
- limit = anonymous_variable.reserve(Type.INT);
- found = anonymous_variable.reserve(Type.INT);
+ value_of_elem = new ValueOf(elem);
+ value_of_collection_size = new ValueOf(collection_size);
- result.addAll(collection_cc.get_pre_instructions());
-
- result.add(new SetValue(index, new Constant(Type.INT, "0")));
- result.add
- (
- new SetValue
+ result.addAll
(
- limit,
- Operation.minus
+ BinarySearch.generate
(
- new Size(collection_as_ref),
- new Constant(Type.INT, "1")
+ anonymous_variables,
+ value_of_elem,
+ value_of_collection_size,
+ collection,
+ found,
+ index
)
- )
- );
- result.add(new SetValue(found, new Constant(Type.INT, "0")));
-
- if_false_body.add
- (
- new IfElseInstruction
- (
- Operation.equals
- (
- new ValueOf(elem),
- new ValueOf
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(new ValueOf(index), Type.STRING)
- )
- )
- )
- ),
- Collections.singletonList
- (
- new SetValue
- (
- found,
- Operation.plus
- (
- new ValueOf(found),
- new Constant(Type.INT, "1")
- )
- )
- ),
- new NOP()
- )
- );
+ );
- if_false_body.add
- (
- new SetValue
+ result.add
(
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(new ValueOf(index), Type.STRING)
- )
- ),
- new ValueOf
+ new IfElseInstruction
(
- new RelativeRef
+ new ValueOf(found),
+ RemoveAt.generate
(
- collection_as_ref,
- Collections.singletonList
- (
- new Cast
- (
- Operation.plus(new ValueOf(index), new ValueOf(found)),
- Type.STRING
- )
- )
- )
+ anonymous_variables,
+ index,
+ value_of_collection_size,
+ collection
+ ),
+ Collections.singletonList(new NOP())
)
- )
- );
-
- while_body.add
- (
- new IfElseInstruction
- (
- Operation.equal(new ValueOf(found), new Constant(Type.INT, "0")),
- Collections.singletonList(new NOP()),
- if_false_body
- )
- );
-
- while_body.add
- (
- new SetValue
- (
- index,
- Operation.plus(new ValueOf(index), new Constant(Type.INT, "1"))
- )
- );
-
- result.add
- (
- new While
- (
- Operation.less_than(new ValueOf(index), new ValueOf(limit)),
- while_body
- )
- );
-
- while_body2.add
- (
- new SetValue
- (
- found,
- Operation.minus(new ValueOf(found), new Constant(Type.INT, "1"))
- )
- );
+ );
- while_body2.add
- (
- new Remove
+ anonymous_variables.release(index);
+ anonymous_variables.release(found);
+ }
+ else
+ {
+ result.addAll
(
- new RelativeRef
+ RemoveAllOf.generate
(
- collection_as_ref,
- Collections.singletonList
- (
- new Cast
- (
- Operation.minus(new ValueOf(limit), new ValueOf(found)),
- Type.STRING
- )
- )
+ anonymous_variables,
+ new ValueOf(elem),
+ new ValueOf(collection_size),
+ collection
)
- )
- );
-
- result.add
- (
- new While
- (
- Operation.greater_than
- (
- new ValueOf(found),
- new Constant(Type.INT, "0")
- ),
- while_body2
- )
- );
+ );
+ }
collection_cc.free_anonymous_variables();
+
+ anonymous_variables.release(elem);
+ anonymous_variables.release(collection_size);
}
@Override
@@ -1098,242 +981,126 @@ public class InstructionCompiler extends FateVisitor
* (remove_element element collection)
*
* Wyrd:
- * (declare_variable int .index)
- * (declare_variable int .limit)
* (declare_variable <element_type> .elem)
+ * (declare_variable int .collection_size)
* (declare_variable boolean .found)
- * (declare_variable int .next)
- * (set .index 0)
- * (set .limit (- (size collection) 1))
- * (set .elem element) ;; avoid re-computing element
- * (set .found false)
- * (while (< .index .limit)
- * (set .next (+ (var index) 1))
- * (ifelse (var .found)
- * (
- * (set collection[.index] (var collection[.next]))
- * )
- * (ifelse (= (var .elem) (var collection[.index]))
- * (;; if_true_body
- * (set .found true)
- * (set collection[.index] (var collection[.next]))
- * )
- * (nop)
- * )
- * )
- * (set .index (var .next))
- * )
- * (ifelse (or (var .found) (= (var .elem) (var collection[.index])))
- * (remove collection[.limit])
+ * (declare_variable int .index)
+ *
+ * (set .elem element)
+ * (set .collection_size (size collection))
+ *
+ * <if collection is a set:
+ * <BinarySearch
+ * (var .elem)
+ * (var .collection_size)
+ * collection
+ * .found
+ * .index
+ * >
+ * >
+ * <if collection is a list:
+ * <IterativeSearch
+ * (var .elem)
+ * (var .collection_size)
+ * collection
+ * .found
+ * .index
+ * >
+ * >
+ *
+ * (if (var .found)
+ * <remove_at (var index) (var .collection_size) collection>
* (nop)
* )
*/
final ComputationCompiler elem_cc, collection_cc;
- final Ref index, limit, elem, found, next;
- final Ref collection_as_ref;
- final List<Instruction> while_body, if_true_body;
+ final Ref elem, collection_size, found, index;
+ final Ref collection;
+ final Computation value_of_collection_size;
- elem_cc = new_computation_compiler();
- collection_cc = new_computation_compiler();
+ elem_cc = new_computation_compiler(false);
+ collection_cc = new_computation_compiler(true);
- while_body = new ArrayList<Instruction>();
- if_true_body = new ArrayList<Instruction>();
+ elem = anonymous_variables.reserve(elem_cc.get_computation().get_type());
+ collection_size = anonymous_variables.reserve(Type.INT);
+ found = anonymous_variables.reserve(Type.BOOLEAN);
+ index = anonymous_variables.reserve(Type.INT);
- /* Minimize variable usage for element ***********/
- n.get_element().visit(elem_cc);
+ n.get_element().get_visited_by(elem_cc);
+ n.get_collection().get_visited_by(collection_cc);
result.addAll(elem_cc.get_pre_instructions());
-
- elem = anonymous_variable.reserve(elem_cc.get_computation().get_type());
-
- result.add(new SetValue(elem, elem_cc.get_computation()));
-
- elem_cc.free_anonymous_variables();
- /***********/
-
- n.get_collection().visit(collection_cc);
-
result.addAll(collection_cc.get_pre_instructions());
- if (!(collection_cc.get_computation() instanceof Ref))
- {
- /* TODO: error. */
- }
+ collection = collection_cc.get_ref();
- collection_as_ref = (Ref) collection_cc.get_computation();
+ value_of_collection_size = new ValueOf(collection_size);
- index = anonymous_variable.reserve(Type.INT);
- limit = anonymous_variable.reserve(Type.INT);
- found = anonymous_variable.reserve(Type.BOOLEAN);
- next = anonymous_variable.reserve(Type.INT);
+ result.add(new SetValue(elem, elem_cc.get_computation()));
+ result.add(new SetValue(collection_size, new Size(collection)));
- result.add(new SetValue(index, new Constant(Type.INT, "0")));
- result.add
- (
- new SetValue
- (
- limit,
- Operation.minus
- (
- new Size(collection_as_ref),
- new Constant(Type.INT, "1")
- )
- )
- );
- result.add(new SetValue(found, Constant.FALSE));
+ elem_cc.free_anonymous_variables();
- if_true_branch.add(new SetValue(found, Constant.TRUE));
- if_true_branch.add
+ if
(
- new SetValue
(
- /* collection[.index] */
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(newValueOf(index), Type.STRING)
- )
- ),
- /* (var collection[.next]) */
- new ValueOf
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(new ValueOf(next), Type.STRING)
- )
- )
- )
- )
- );
-
- while_body.add
- (
- new SetValue
+ (tonkadur.fate.v1.lang.type.CollectionType)
+ n.get_collection().get_type()
+ ).is_set()
+ )
+ {
+ result.addAll
(
- next,
- Operation.plus
+ BinarySearch.generate
(
- new ValueOf(index),
- new Constant(Type.INT, "1")
+ anonymous_variables,
+ new ValueOf(elem),
+ value_of_collection_size,
+ collection,
+ found,
+ index
)
- )
- );
-
- while_body.add
- (
- new IfElseInstruction
+ );
+ }
+ else
+ {
+ result.addAll
(
- new ValueOf(found),
- Collections.singletonList
+ IterativeSearch.generate
(
- new SetValue
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(newValueOf(index), Type.STRING)
- )
- ),
- new ValueOf
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(new ValueOf(next), Type.STRING)
- )
- )
- )
- )
- ),
- Collections.singletonList
- (
- new IfElseInstruction
- (
- Operation.equals
- (
- new ValueOf(elem),
- new ValueOf
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(newValueOf(index), Type.STRING)
- )
- )
- )
- ),
- if_true_branch,
- Collections.singleton(new NOP())
- )
+ anonymous_variables,
+ new ValueOf(elem),
+ value_of_collection_size,
+ collection,
+ found,
+ index
)
- )
- );
+ );
+ }
- result.add
- (
- new While
- (
- Operation.less_than(new ValueOf(index), new ValueOf(limit)),
- while_body
- )
- );
+ anonymous_variables.release(elem);
result.add
(
new IfElseInstruction
(
- Operation.or
- (
- new ValueOf(found),
- Operation.equals
- (
- new ValueOf(elem),
- new ValueOf
- (
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(newValueOf(index), Type.STRING)
- )
- )
- )
- )
- ),
- new Remove
+ new ValueOf(found),
+ RemoveAt.generate
(
- new RelativeRef
- (
- collection_as_ref,
- Collections.singletonList
- (
- new Cast(newValueOf(limit), Type.STRING)
- )
- )
+ anonymous_variables,
+ index,
+ value_of_collection_size,
+ collection
),
- new NOP()
+ Collections.singletonList(new NOP())
)
);
- collection_cc.free_anonymous_variables();
-
anonymous_variables.release(index);
- anonymous_variables.release(limit);
- anonymous_variables.release(elem);
anonymous_variables.release(found);
- anonymous_variables.release(next);
+ anonymous_variables.release(collection_size);
+
+ collection_cc.free_anonymous_variables();
}
@Override
@@ -1363,21 +1130,21 @@ public class InstructionCompiler extends FateVisitor
*/
final ComputationCompiler value_cc, ref_cc;
- value_cc = new_computation_compiler();
- ref_cc = new_computation_compiler();
+ value_cc = new_computation_compiler(false);
+ ref_cc = new_computation_compiler(true);
- n.get_value().visit(value_cc);
+ n.get_value().get_visited_by(value_cc);
result.addAll(value_cc.get_pre_instructions());
- n.get_reference().visit(ref_cc);
+ n.get_reference().get_visited_by(ref_cc);
result.addAll(ref_cc.get_pre_instructions());
result.add
(
- new SetValue(ref_cc.get_computation(), value_cc.get_computation())
+ new SetValue(ref_cc.get_ref(), value_cc.get_computation())
);
- element_cc.free_anonymous_variables();
+ value_cc.free_anonymous_variables();
ref_cc.free_anonymous_variables();
}
}
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/MacroManager.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/MacroManager.java
new file mode 100644
index 0000000..29256e0
--- /dev/null
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/MacroManager.java
@@ -0,0 +1,50 @@
+package tonkadur.wyrd.v1.compiler.fate.v1;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import tonkadur.wyrd.v1.lang.computation.Ref;
+
+public class MacroManager
+{
+ protected final Stack<Map<String, Ref>> context_stack;
+
+ public MacroManager ()
+ {
+ context_stack = new Stack<Map<String, Ref>>();
+ }
+
+ public void pop ()
+ {
+ context_stack.pop();
+ }
+
+ public void push
+ (
+ tonkadur.fate.v1.lang.Macro macro,
+ final List<Ref> parameter_refs
+ )
+ {
+ final Iterator<Ref> pri;
+ final Iterator<tonkadur.fate.v1.lang.meta.TypedEntryList.TypedEntry> pre;
+ final Map<String, Ref> parameters;
+
+ parameters = new HashMap<String, Ref>();
+
+ pri = parameter_refs.iterator();
+ pre = macro.get_parameters().get_entries().iterator();
+
+ while (pri.hasNext())
+ {
+ parameters.put(pre.next().get_name(), pri.next());
+ }
+ }
+
+ public Ref get_parameter_ref (final String parameter)
+ {
+ return context_stack.peek().get(parameter);
+ }
+}
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/BinarySearch.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/BinarySearch.java
index f16537f..6857e58 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/BinarySearch.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/BinarySearch.java
@@ -29,8 +29,8 @@ public class BinarySearch
/*
* (Computation <E> element)
- * (declare_variable global <List E> collection)
* (Computation int collection_size)
+ * (declare_variable global <List E> collection)
* (declare_variable global boolean result_found)
* (declare_variable global index result_index)
*
@@ -70,8 +70,8 @@ public class BinarySearch
(
final AnonymousVariableManager anonymous_variables,
final Computation target,
- final Ref collection,
final Computation collection_size,
+ final Ref collection,
final Ref result_was_found,
final Ref result_index
)
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/IterativeSearch.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/IterativeSearch.java
index aa62bbd..5ce409d 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/IterativeSearch.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/IterativeSearch.java
@@ -28,8 +28,8 @@ public class IterativeSearch
/*
* (Computation <E> target)
- * (declare_variable global <List E> collection)
* (Computation int collection_size)
+ * (declare_variable global <List E> collection)
* (declare_variable global boolean result_found)
* (declare_variable global index result_index)
*
@@ -51,8 +51,8 @@ public class IterativeSearch
(
final AnonymousVariableManager anonymous_variables,
final Computation target,
- final Ref collection,
final Computation collection_size,
+ final Ref collection,
final Ref result_was_found,
final Ref result_index
)
diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAll.java b/src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAllOf.java
index 699f18d..78d81ad 100644
--- a/src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAll.java
+++ b/src/core/src/tonkadur/wyrd/v1/compiler/util/RemoveAllOf.java
@@ -22,10 +22,10 @@ import tonkadur.wyrd.v1.lang.instruction.Remove;
import tonkadur.wyrd.v1.lang.instruction.SetValue;
import tonkadur.wyrd.v1.lang.instruction.While;
-public class RemoveAll
+public class RemoveAllOf
{
/* Utility Class */
- private RemoveAll () {}
+ private RemoveAllOf () {}
/*
* (Computation <E> element)
diff --git a/src/core/src/tonkadur/wyrd/v1/lang/World.java b/src/core/src/tonkadur/wyrd/v1/lang/World.java
index 3cb0397..e8e86ba 100644
--- a/src/core/src/tonkadur/wyrd/v1/lang/World.java
+++ b/src/core/src/tonkadur/wyrd/v1/lang/World.java
@@ -39,6 +39,11 @@ public class World
global_instructions = new ArrayList<Instruction>();
}
+ public void add_required_extension (final String name)
+ {
+ required_extensions.add(name);
+ }
+
public DictType get_dict_type (final String name)
{
return dict_types.get(name);