| summaryrefslogtreecommitdiff | 
diff options
29 files changed, 532 insertions, 481 deletions
| diff --git a/src/core/src/tonkadur/fate/v1/lang/InputEvent.java b/src/core/src/tonkadur/fate/v1/lang/InputEvent.java deleted file mode 100644 index 17d6a48..0000000 --- a/src/core/src/tonkadur/fate/v1/lang/InputEvent.java +++ /dev/null @@ -1,181 +0,0 @@ -package tonkadur.fate.v1.lang; - -import java.util.ArrayList; -import java.util.List; - -import tonkadur.functional.Merge; - -import tonkadur.parser.Context; -import tonkadur.parser.Location; -import tonkadur.parser.Origin; - -import tonkadur.fate.v1.lang.meta.DeclaredEntity; - -import tonkadur.fate.v1.lang.type.Type; - -public class InputEvent extends DeclaredEntity -{ -   protected static final InputEvent ANY; - -   static -   { -      ANY = -         new InputEvent -         ( -            Origin.BASE_LANGUAGE, -            new ArrayList<Type>(), -            /* -             * Use of a space necessary to avoid conflicting with a user created -             * type. -             */ -            "undetermined input event" -         ); -   } - -   public static InputEvent value_on_missing () -   { -      return ANY; -   } - -   @Override -   public /* static */ String get_type_name () -   { -      return "InputEvent"; -   } - - -   /***************************************************************************/ -   /**** MEMBERS **************************************************************/ -   /***************************************************************************/ -   protected final List<Type> signature; - -   /***************************************************************************/ -   /**** PUBLIC ***************************************************************/ -   /***************************************************************************/ - -   /**** Constructors *********************************************************/ -   public InputEvent -   ( -      final Origin origin, -      final List<Type> signature, -      final String name -   ) -   { -      super(origin, name); - -      this.signature = signature; -   } - -   /**** Accessors ************************************************************/ -   public List<Type> get_signature () -   { -      return signature; -   } - -   @Override -   public DeclaredEntity generate_comparable_to (final DeclaredEntity de) -   { -      final List<Type> new_signature; -      final InputEvent e; - -      if (!(de instanceof InputEvent)) -      { -         return ANY; -      } - -      e = (InputEvent) de; - -      if (signature.size() != e.signature.size()) -      { -         return ANY; -      } - -      new_signature = -         new Merge<Type, Type, Type>() -         { -            @Override -            protected Type lambda (final Type a, final Type b) -            { -               return (Type) a.generate_comparable_to(b); -            } -         }.merge(signature, e.signature); - -      return new InputEvent(origin, new_signature, name); -   } - -   /**** Misc. ****************************************************************/ -   @Override -   public boolean is_incompatible_with_declaration (final DeclaredEntity de) -   { -      if (de instanceof InputEvent) -      { -         final InputEvent e; - -         e = (InputEvent) de; - -         if (signature.size() == e.signature.size()) -         { -            final List<Boolean> compatibility_result; - -            /* -             * Basically, the events are compatible if, and only if, the old -             * signature is as least as restrictive as the new one. -             */ -            compatibility_result = -               ( -                  new Merge<Type, Type, Boolean>() -                  { -                     @Override -                     protected Boolean lambda (final Type a, final Type b) -                     { -                        return -                           new Boolean(a.can_be_used_as(b)); -                     } -                  }.merge(signature, e.signature) -               ); - -            return compatibility_result.contains(Boolean.TRUE); -         } -      } - -      return true; -   } - -   @Override -   public String toString () -   { -      final StringBuilder sb = new StringBuilder(); - -      sb.append("("); -      sb.append(get_type_name()); -      sb.append(" "); -      sb.append(name); - -      if (!signature.isEmpty()) -      { -         boolean first_argument; - -         sb.append(": "); - -         first_argument = true; - -         for (final Type type: signature) -         { -            if (first_argument) -            { -               first_argument = false; -            } -            else -            { -               sb.append(" -> "); -            } - -            sb.append(type.get_name()); -         } -      } - -      sb.append(")"); - -      return sb.toString(); -   } -} diff --git a/src/core/src/tonkadur/fate/v1/lang/TextEffect.java b/src/core/src/tonkadur/fate/v1/lang/TextEffect.java index f833027..2ac4000 100644 --- a/src/core/src/tonkadur/fate/v1/lang/TextEffect.java +++ b/src/core/src/tonkadur/fate/v1/lang/TextEffect.java @@ -13,7 +13,7 @@ import tonkadur.fate.v1.lang.meta.DeclaredEntity;  import tonkadur.fate.v1.lang.type.Type; -public class TextEffect extends Event +public class TextEffect extends DeclaredEntity  {     protected static final TextEffect ANY; @@ -47,6 +47,7 @@ public class TextEffect extends Event     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ +   protected final List<Type> signature;     /***************************************************************************/     /**** PUBLIC ***************************************************************/ @@ -94,6 +95,11 @@ public class TextEffect extends Event        return new TextEffect(origin, new_signature, name);     } +   public List<Type> get_signature () +   { +      return signature; +   } +     /**** Misc. ****************************************************************/     @Override     public boolean is_incompatible_with_declaration (final DeclaredEntity de) diff --git a/src/core/src/tonkadur/fate/v1/lang/World.java b/src/core/src/tonkadur/fate/v1/lang/World.java index d07d9b7..f6caa7c 100644 --- a/src/core/src/tonkadur/fate/v1/lang/World.java +++ b/src/core/src/tonkadur/fate/v1/lang/World.java @@ -20,8 +20,8 @@ import tonkadur.fate.v1.error.UnknownSequenceException;  import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.DeclarationCollection; -import tonkadur.fate.v1.lang.meta.ExtensionInstruction; -import tonkadur.fate.v1.lang.meta.ExtensionComputation; +import tonkadur.fate.v1.lang.meta.ExtraInstruction; +import tonkadur.fate.v1.lang.meta.ExtraComputation;  import tonkadur.fate.v1.lang.meta.RecurrentChecks;  import tonkadur.fate.v1.lang.meta.Instruction; @@ -41,13 +41,10 @@ public class World     protected final Map<String, List<Cons<Origin, List<Computation>>>>        sequence_uses;     protected final Map<String, List<SequenceReference>> sequence_variables; -   protected final Map<String, ExtensionComputation> extension_value_nodes; -   protected final Map<String, ExtensionInstruction> extension_instructions; -   protected final Map<String, ExtensionInstruction> -      extension_first_level_instructions; +   protected final DeclarationCollection<ExtraInstruction> ei_collection; +   protected final DeclarationCollection<ExtraComputation> ec_collection;     protected final DeclarationCollection<Event> event_collection; -   protected final DeclarationCollection<InputEvent> input_event_collection;     protected final DeclarationCollection<Sequence> sequence_collection;     protected final DeclarationCollection<TextEffect> text_effect_collection;     protected final DeclarationCollection<Type> type_collection; @@ -70,15 +67,19 @@ public class World        sequence_variables = new HashMap<String, List<SequenceReference>>(); -      extension_value_nodes = new HashMap<String, ExtensionComputation>(); -      extension_instructions = new HashMap<String, ExtensionInstruction>(); -      extension_first_level_instructions = -         new HashMap<String, ExtensionInstruction>(); +      ei_collection = +         new DeclarationCollection<ExtraInstruction> +         ( +            ExtraInstruction.value_on_missing() +         ); +      ec_collection = +         new DeclarationCollection<ExtraComputation> +         ( +            ExtraComputation.value_on_missing() +         );        event_collection =           new DeclarationCollection<Event>(Event.value_on_missing()); -      input_event_collection = -         new DeclarationCollection<InputEvent>(InputEvent.value_on_missing());        sequence_collection = new DeclarationCollection<Sequence>(null);        text_effect_collection = @@ -164,35 +165,22 @@ public class World        list_of_variables.add(sr);     } -   /**** Extension Stuff ****/ -   public Map<String, ExtensionInstruction> extension_instructions () -   { -      return extension_instructions; -   } - -   public Map<String, ExtensionInstruction> extension_first_level_instructions -   ( -   ) +   /**** Collections ****/ +   public DeclarationCollection<ExtraInstruction> extra_instructions ()     { -      return extension_first_level_instructions; +      return ei_collection;     } -   public Map<String, ExtensionComputation> extension_value_nodes () +   public DeclarationCollection<ExtraComputation> extra_computations ()     { -      return extension_value_nodes; +      return ec_collection;     } -   /**** Collections ****/     public DeclarationCollection<Event> events ()     {        return event_collection;     } -   public DeclarationCollection<InputEvent> input_events () -   { -      return input_event_collection; -   } -     public DeclarationCollection<Sequence> sequences ()     {        return sequence_collection; @@ -267,38 +255,45 @@ public class World        }        sb.append(System.lineSeparator()); -      sb.append("Events: "); +      sb.append("Extra Instructions:");        sb.append(System.lineSeparator()); -      sb.append(event_collection.toString()); +      sb.append(ei_collection.toString()); +      sb.append(System.lineSeparator()); +      sb.append(System.lineSeparator()); + +      sb.append(System.lineSeparator()); +      sb.append("Extra Computations:"); +      sb.append(System.lineSeparator()); +      sb.append(ec_collection.toString());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator()); -      sb.append("Input Events: "); +      sb.append("Events:");        sb.append(System.lineSeparator()); -      sb.append(input_event_collection.toString()); +      sb.append(event_collection.toString());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator()); -      sb.append("Text Effects: "); +      sb.append("Text Effects:");        sb.append(System.lineSeparator());        sb.append(text_effect_collection.toString());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator()); -      sb.append("Types: "); +      sb.append("Types:");        sb.append(System.lineSeparator());        sb.append(type_collection.toString());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator()); -      sb.append("Variables: "); +      sb.append("Variables:");        sb.append(System.lineSeparator());        sb.append(variable_collection.toString());        sb.append(System.lineSeparator());        sb.append(System.lineSeparator()); -      sb.append("Sequences: "); +      sb.append("Sequences:");        sb.append(System.lineSeparator());        sb.append(sequence_collection.toString());        sb.append(System.lineSeparator()); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java b/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java new file mode 100644 index 0000000..d46d20f --- /dev/null +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java @@ -0,0 +1,94 @@ +package tonkadur.fate.v1.lang.computation; + +import java.util.List; + +import tonkadur.parser.Context; +import tonkadur.parser.Origin; + +import tonkadur.fate.v1.lang.meta.Computation; +import tonkadur.fate.v1.lang.meta.ExtraComputation; + +public class ExtraComputationInstance extends Computation +{ +   protected final ExtraComputation computation; +   protected final List<Computation> parameters; + +   /***************************************************************************/ +   /**** PROTECTED ************************************************************/ +   /***************************************************************************/ +   /**** Constructors *********************************************************/ +   protected ExtraComputationInstance +   ( +      final Origin origin, +      final ExtraComputation computation, +      final List<Computation> parameters +   ) +   { +      super(origin, computation.get_result_type()); + +      this.computation = computation; +      this.parameters = parameters; +   } + +   /***************************************************************************/ +   /**** PUBLIC ***************************************************************/ +   /***************************************************************************/ +   /**** Constructors *********************************************************/ +   public ExtraComputationInstance build +   ( +      final Origin origin, +      final ExtraComputation computation, +      final List<Computation> parameters +   ) +   throws ParsingError +   { +      RecurrentChecks.assert_computations_matches_signature +      ( +         origin, +         parameters, +         computation.get_signature() +      ); + +      return new ExtraComputationInstance(origin, computation, parameters); +   } + +   /**** Accessors ************************************************************/ +   public ExtraComputation get_computation_type () +   { +      return computation; +   } + +   public List<Computation> get_parameters () +   { +      return parameters; +   } + +   @Override +   public void get_visited_by (final ComputationVisitor cv) +   throws Throwable +   { +      cv.visit_extra_computation(this); +   } + +   /**** Misc. ****************************************************************/ +   @Override +   public String toString () +   { +      final StringBuilder sb; + +      sb = new StringBuilder(); + +      sb.append("("); +      sb.append(computation.get_name()); + +      for (final Computation p: parameters) +      { +         sb.append(" "); +         sb.append(p.toString()); +      } + +      sb.append(")"); + +      return sb.toString(); +   } +} diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java index b21024b..b21024b 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToRichText.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java b/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java index 16d23ed..f333509 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/EventCall.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java @@ -2,40 +2,31 @@ package tonkadur.fate.v1.lang.instruction;  import java.util.List; +import tonkadur.parser.Context;  import tonkadur.parser.Origin; -import tonkadur.parser.ParsingError; -import tonkadur.fate.v1.lang.Event; - -import tonkadur.fate.v1.lang.type.Type; - -import tonkadur.fate.v1.lang.meta.InstructionVisitor;  import tonkadur.fate.v1.lang.meta.Instruction; -import tonkadur.fate.v1.lang.meta.Computation; -import tonkadur.fate.v1.lang.meta.RecurrentChecks; +import tonkadur.fate.v1.lang.meta.ExtraInstruction; -public class EventCall extends Instruction +public class ExtraInstructionInstance extends Instruction  { -   /***************************************************************************/ -   /**** MEMBERS **************************************************************/ -   /***************************************************************************/ -   protected final Event event; +   protected final ExtraInstruction instruction;     protected final List<Computation> parameters;     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected EventCall +   protected ExtraInstructionInstance     (        final Origin origin, -      final Event event, +      final ExtraInstruction instruction,        final List<Computation> parameters     )     {        super(origin); -      this.event = event; +      this.instruction = instruction;        this.parameters = parameters;     } @@ -43,10 +34,10 @@ public class EventCall extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static EventCall build +   public ExtraInstructionInstance build     (        final Origin origin, -      final Event event, +      final ExtraInstruction instruction,        final List<Computation> parameters     )     throws ParsingError @@ -55,10 +46,10 @@ public class EventCall extends Instruction        (           origin,           parameters, -         event.get_signature() +         instruction.get_signature()        ); -      return new EventCall(origin, event, parameters); +      return new ExtraInstructionInstance(origin, instruction, parameters);     }     /**** Accessors ************************************************************/ @@ -66,12 +57,12 @@ public class EventCall extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_event_call(this); +      iv.visit_extra_instruction(this);     } -   public Event get_event () +   public ExtraInstruction get_instruction_type ()     { -      return event; +      return instruction;     }     public List<Computation> get_parameters () @@ -83,18 +74,20 @@ public class EventCall extends Instruction     @Override     public String toString ()     { -      final StringBuilder sb = new StringBuilder(); +      final StringBuilder sb; + +      sb = new StringBuilder(); -      sb.append("(EventCall ("); -      sb.append(event.get_name()); +      sb.append("("); +      sb.append(instruction.get_name()); -      for (final Computation param: parameters) +      for (final Computation p: parameters)        {           sb.append(" "); -         sb.append(param.toString()); +         sb.append(p.toString());        } -      sb.append("))"); +      sb.append(")");        return sb.toString();     } diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java index a1efed4..3daef53 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java @@ -6,7 +6,7 @@ import java.util.List;  import tonkadur.parser.Origin;  import tonkadur.parser.ParsingError; -import tonkadur.fate.v1.lang.InputEvent; +import tonkadur.fate.v1.lang.Event;  import tonkadur.fate.v1.lang.type.Type; @@ -20,7 +20,7 @@ public class PlayerInput extends Instruction     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final InputEvent input_event; +   protected final Event input_event;     protected final List<Computation> params;     protected final List<Instruction> effects; @@ -31,7 +31,7 @@ public class PlayerInput extends Instruction     protected PlayerInput     (        final Origin origin, -      final InputEvent input_event, +      final Event input_event,        final List<Computation> params,        final List<Instruction> effects     ) @@ -50,7 +50,7 @@ public class PlayerInput extends Instruction     public PlayerInput     (        final Origin origin, -      final InputEvent input_event, +      final Event input_event,        final List<Instruction> effects     )     { @@ -64,7 +64,7 @@ public class PlayerInput extends Instruction     public static PlayerInput build     (        final Origin origin, -      final InputEvent event, +      final Event event,        final List<Computation> parameters,        final List<Instruction> effects     ) @@ -88,7 +88,7 @@ public class PlayerInput extends Instruction        iv.visit_player_input(this);     } -   public InputEvent get_input_event () +   public Event get_input_event ()     {        return input_event;     } diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java index adb3a05..5d0821e 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java @@ -4,6 +4,9 @@ import tonkadur.fate.v1.lang.computation.*;  public interface ComputationVisitor  { +   public void visit_extra_computation (final ExtraComputationInstance n) +   throws Throwable; +     public void visit_at_reference (final AtReference n)     throws Throwable; diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionComputation.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionComputation.java deleted file mode 100644 index 465aed7..0000000 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionComputation.java +++ /dev/null @@ -1,39 +0,0 @@ -package tonkadur.fate.v1.lang.meta; - -import java.util.List; - -import tonkadur.parser.Context; -import tonkadur.parser.Origin; - -import tonkadur.fate.v1.lang.World; - -import tonkadur.fate.v1.lang.type.Type; - -import tonkadur.fate.v1.lang.meta.Computation; - -public class ExtensionComputation extends Computation -{ -   /***************************************************************************/ -   /**** PUBLIC ***************************************************************/ -   /***************************************************************************/ -   /**** Constructors *********************************************************/ -   protected ExtensionComputation -   ( -      final Origin origin, -      final Type result_type -   ) -   { -      super(origin, result_type); -   } - -   public ExtensionComputation build -   ( -      final World world, -      final Context context, -      final Origin origin, -      final List<Computation> parameters -   ) -   { -      return new ExtensionComputation(Origin.BASE_LANGUAGE, Type.ANY); -   } -} diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionInstruction.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionInstruction.java deleted file mode 100644 index 939e151..0000000 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ExtensionInstruction.java +++ /dev/null @@ -1,35 +0,0 @@ -package tonkadur.fate.v1.lang.meta; - -import java.util.List; - -import tonkadur.parser.Context; -import tonkadur.parser.Origin; - -import tonkadur.fate.v1.lang.World; - -import tonkadur.fate.v1.lang.type.Type; - -import tonkadur.fate.v1.lang.meta.Instruction; - -public class ExtensionInstruction extends Instruction -{ -   /***************************************************************************/ -   /**** PUBLIC ***************************************************************/ -   /***************************************************************************/ -   /**** Constructors *********************************************************/ -   public ExtensionInstruction (final Origin origin) -   { -      super(origin); -   } - -   public ExtensionInstruction build -   ( -      final World world, -      final Context context, -      final Origin origin, -      final List<Instruction> parameters -   ) -   { -      return new ExtensionInstruction(Origin.BASE_LANGUAGE); -   } -} diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java new file mode 100644 index 0000000..703e079 --- /dev/null +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java @@ -0,0 +1,92 @@ +package tonkadur.fate.v1.lang.meta; + +import java.util.List; + +import tonkadur.parser.Context; +import tonkadur.parser.Origin; + +import tonkadur.fate.v1.lang.World; + +import tonkadur.fate.v1.lang.type.Type; + +public class ExtraComputation extends DeclaredEntity +{ +   protected final Type returned_type; +   protected final List<Type> signature; + +   /***************************************************************************/ +   /**** PUBLIC ***************************************************************/ +   /***************************************************************************/ +   /**** Constructors *********************************************************/ +   public ExtraComputation +   ( +      final Origin origin, +      final Type returned_type, +      final String name, +      final List<Type> signature +   ) +   { +      super(origin, name); + +      this.returned_type = returned_type; +      this.signature = signature; +   } + +   public ExtraComputation +   ( +      final Type returned_type, +      final String name, +      final List<Type> signature +   ) +   { +      super(Origin.BASE_LANGUAGE, name); + +      this.returned_type = returned_type; +      this.signature = signature; +   } + +   /**** Accessors ************************************************************/ +   public Type get_returned_type () +   { +      return returned_type; +   } + +   public List<Type> get_signature () +   { +      return signature; +   } + +   /**** Instantiating ********************************************************/ +   public ExtraComputationInstance instantiate +   ( +      final World world, +      final Context context, +      final Origin origin, +      final List<Computation> parameters +   ) +   throws ParsingError +   { +      return ExtraComputationInstance.build(origin, this, parameters); +   } + +   /**** Misc. ****************************************************************/ +   @Override +   public String toString () +   { +      final StringBuilder sb; + +      sb = new StringBuilder(); + +      sb.append(returned_type.toString()); +      sb.append(" "); +      sb.append(name); + +      for (final Type t: signature) +      { +         sb.append(" "); +         sb.append(t.toString()); +      } + +      return name; +   } +} diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java new file mode 100644 index 0000000..10a8f05 --- /dev/null +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java @@ -0,0 +1,80 @@ +package tonkadur.fate.v1.lang.meta; + +import java.util.List; + +import tonkadur.parser.Context; +import tonkadur.parser.Origin; + +import tonkadur.fate.v1.lang.World; + +import tonkadur.fate.v1.lang.type.Type; + +public class ExtraInstruction extends DeclaredEntity +{ +   protected final List<Type> signature; + +   /***************************************************************************/ +   /**** PUBLIC ***************************************************************/ +   /***************************************************************************/ +   /**** Constructors *********************************************************/ +   public ExtraInstruction +   ( +      final Origin origin, +      final String name, +      final List<Type> signature +   ) +   { +      super(origin, name); + +      this.signature = signature; +   } + +   public ExtraInstruction +   ( +      final String name, +      final List<Type> signature +   ) +   { +      super(Origin.BASE_LANGUAGE, name); + +      this.signature = signature; +   } + +   /**** Accessors ************************************************************/ +   public List<Type> get_signature () +   { +      return signature; +   } + +   /**** Instantiating ********************************************************/ +   public ExtraInstructionInstance instantiate +   ( +      final World world, +      final Context context, +      final Origin origin, +      final List<Instruction> parameters +   ) +   throws ParsingError +   { +      return ExtraInstructionInstance.build(origin, this, parameters); +   } + +   /**** Misc. ****************************************************************/ +   @Override +   public String toString () +   { +      final StringBuilder sb; + +      sb = new StringBuilder(); + +      sb.append(name); + +      for (final Type t: signature) +      { +         sb.append(" "); +         sb.append(t.toString()); +      } + +      return name; +   } +} 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 406cd7f..6426cfb 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java @@ -8,6 +8,9 @@ public interface InstructionVisitor     public void visit_add_element (final AddElement n)     throws Throwable; +   public void visit_extra_instruction (final ExtraInstructionInstance n) +   throws Throwable; +     public void visit_add_element_at (final AddElementAt n)     throws Throwable; @@ -101,9 +104,6 @@ public interface InstructionVisitor     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; diff --git a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 index 68bf6d9..cd96bb4 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 @@ -39,8 +39,9 @@ DECLARE_ALIAS_TYPE_KW:     L_PAREN ((('declare'|'define'|'def')US(('sub'|'alias')US)?'type')|'typedef') SEP+;  DECLARE_DICT_TYPE_KW: L_PAREN     ('declare'|'define'|'def')US('dict'|('struct''ure'?))(US'type')? SEP+; -DECLARE_EVENT_TYPE_KW: L_PAREN ('declare'|'define'|'def')US'event'(US'type')? SEP+; -DECLARE_INPUT_EVENT_TYPE_KW: L_PAREN ('declare'|'define'|'def')US'input'US'event'(US'type')? SEP+; +DECLARE_EXTRA_INSTRUCTION_KW: L_PAREN ('declare'|'define'|'def')US'extra'US'instruction' SEP+; +DECLARE_EXTRA_COMPUTATION_KW: L_PAREN ('declare'|'define'|'def')US'extra'US'computation' SEP+; +DECLARE_INPUT_EVENT_TYPE_KW: L_PAREN ('declare'|'define'|'def')(US'input')?US'event'(US'type')? SEP+;  DECLARE_TEXT_EFFECT_KW: L_PAREN ('declare'|'define'|'def')US'text'US'effect' SEP+;  DECLARE_VARIABLE_KW: L_PAREN 'global' SEP+;  LOCAL_KW: L_PAREN 'local' SEP+; @@ -52,10 +53,9 @@ DO_WHILE_KW: L_PAREN ('do'US'while') SEP+;  ENABLE_TEXT_EFFECT_KW: L_PAREN 'text'US'effect' SEP+;  END_KW: L_PAREN 'end)';  EQUALS_KW: L_PAREN ('equals'|'='|'=='|'eq') SEP+; -EVENT_KW: L_PAREN 'event' SEP+;  EXTENSION_FIRST_LEVEL_KW: L_PAREN '@'; -EXTENSION_INSTRUCTION_KW: L_PAREN '#'; -EXTENSION_VALUE_KW: L_PAREN '$'; +EXTRA_INSTRUCTION_KW: L_PAREN '#'; +EXTRA_COMPUTATION_KW: L_PAREN '$';  FALSE_KW: L_PAREN 'false)';  IGNORE_ERROR_KW: L_PAREN 'ignore'US('error'|'warning') SEP+;  FATE_VERSION_KW: L_PAREN 'fate'US'version' SEP+; @@ -126,7 +126,7 @@ PUSH_RIGHT_KW: L_PAREN 'push'US'right' SEP+;  IMP_PUSH_RIGHT_KW: L_PAREN 'push'US'right!' SEP+;  PLAYER_CHOICE_KW: L_PAREN ('choice'|'user'US'choice'|'player'US'choice') SEP+;  PLAYER_OPTION_KW: L_PAREN ('option'|'user'US'option'|'player'US'option') SEP+; -PLAYER_EVENT_KW: L_PAREN ('user'US'event'|'player'US'event') SEP+; +PLAYER_EVENT_KW: L_PAREN ('event'|'user'US'event'|'player'US'event') SEP+;  PLUS_KW: L_PAREN ('plus'|'+') SEP+;  POWER_KW: L_PAREN ('power'|'^'|'**'|'pow') SEP+;  RANGE_KW: L_PAREN 'range' SEP+; diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index dc01452..612d77d 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -351,50 +351,98 @@ first_level_fate_instr:        WORLD.types().add(new_type);     } -   | DECLARE_EVENT_TYPE_KW new_reference_name WS* R_PAREN +   | DECLARE_EXTRA_INSTRUCTION_KW new_reference_name WS* R_PAREN     {        final Origin start_origin; -      final Event new_event; +      final ExtraInstruction extra_instruction;        start_origin =           CONTEXT.get_origin_at           ( -            ($DECLARE_EVENT_TYPE_KW.getLine()), -            ($DECLARE_EVENT_TYPE_KW.getCharPositionInLine()) +            ($DECLARE_EXTRA_INSTRUCTION_KW.getLine()), +            ($DECLARE_EXTRA_INSTRUCTION_KW.getCharPositionInLine())           );        new_event = -         new Event +         new ExtraInstruction           (              start_origin, -            new ArrayList<Type>(), -            ($new_reference_name.result) +            ($new_reference_name.result), +            new ArrayList<Type>()           ); -      WORLD.events().add(new_event); +      WORLD.extra_instructions().add(extra_instruction);     } -   | DECLARE_EVENT_TYPE_KW new_reference_name WS+ type_list WS* R_PAREN +   | DECLARE_EXTRA_INSTRUCTION_KW new_reference_name WS+ type_list WS* R_PAREN     {        final Origin start_origin; -      final Event new_event; +      final ExtraInstruction extra_instruction;        start_origin =           CONTEXT.get_origin_at           ( -            ($DECLARE_EVENT_TYPE_KW.getLine()), -            ($DECLARE_EVENT_TYPE_KW.getCharPositionInLine()) +            ($DECLARE_EXTRA_INSTRUCTION_KW.getLine()), +            ($DECLARE_EXTRA_INSTRUCTION_KW.getCharPositionInLine())           );        new_event = -         new Event +         new ExtraInstruction           (              start_origin, -            ($type_list.result), -            ($new_reference_name.result) +            ($new_reference_name.result), +            ($type_list.result)           ); -      WORLD.events().add(new_event); +      WORLD.extra_instructions().add(extra_instruction); +   } + +   | DECLARE_EXTRA_COMPUTATION_KW type WS+ new_reference_name WS+ type_list WS* R_PAREN +   { +      final Origin start_origin; +      final ExtraComputation extra_computation; + +      start_origin = +         CONTEXT.get_origin_at +         ( +            ($DECLARE_EXTRA_COMPUTATION_KW.getLine()), +            ($DECLARE_EXTRA_COMPUTATION_KW.getCharPositionInLine()) +         ); + +      extra_computation = +         new ExtraComputation +         ( +            start_origin, +            ($type.result), +            ($new_reference_name.result), +            ($type_list.result) +         ); + +      WORLD.extra_computations().add(extra_computation); +   } + +   | DECLARE_EXTRA_COMPUTATION_KW type WS+ new_reference_name WS* R_PAREN +   { +      final Origin start_origin; +      final ExtraComputation extra_computation; + +      start_origin = +         CONTEXT.get_origin_at +         ( +            ($DECLARE_EXTRA_COMPUTATION_KW.getLine()), +            ($DECLARE_EXTRA_COMPUTATION_KW.getCharPositionInLine()) +         ); + +      extra_computation = +         new ExtraComputation +         ( +            start_origin, +            ($type.result), +            ($new_reference_name.result), +            new ArrayList<Type>() +         ); + +      WORLD.extra_computations().add(extra_computation);     }     | DECLARE_INPUT_EVENT_TYPE_KW new_reference_name WS* R_PAREN @@ -1673,48 +1721,50 @@ returns [Instruction result]        variable_map.remove(($new_reference_name.result));     } -   | EVENT_KW WORD WS+ value_list WS* R_PAREN +   | EXTRA_INSTRUCTION_KW WORD WS+ value_list WS* R_PAREN     {        final Origin origin; -      final Event event; +      final ExtraInstruction extra_instruction;        origin =           CONTEXT.get_origin_at           ( -            ($EVENT_KW.getLine()), -            ($EVENT_KW.getCharPositionInLine()) +            ($EXTRA_INSTRUCTION_KW.getLine()), +            ($EXTRA_INSTRUCTION_KW.getCharPositionInLine())           ); -      event = WORLD.events().get(origin, ($WORD.text)); +      extra_instruction = WORLD.extra_instructions().get(origin, ($WORD.text));        $result = -         EventCall.build +         extra_instruction.instantiate           ( +            WORLD, +            CONTEXT,              origin, -            event,              ($value_list.result)           );     } -   | EVENT_KW WORD WS* R_PAREN +   | EXTRA_INSTRUCTION_KW WORD WS* R_PAREN     {        final Origin origin; -      final Event event; +      final ExtraInstruction extra_instruction;        origin =           CONTEXT.get_origin_at           ( -            ($EVENT_KW.getLine()), -            ($EVENT_KW.getCharPositionInLine()) +            ($EXTRA_INSTRUCTION_KW.getLine()), +            ($EXTRA_INSTRUCTION_KW.getCharPositionInLine())           ); -      event = WORLD.events().get(origin, ($WORD.text)); +      extra_instruction = WORLD.extra_instructions().get(origin, ($WORD.text));        $result = -         EventCall.build +         extra_instruction.instantiate           ( +            WORLD, +            CONTEXT,              origin, -            event,              new ArrayList<Computation>()           );     } @@ -2007,40 +2057,6 @@ returns [Instruction result]           );     } -   | EXTENSION_INSTRUCTION_KW WORD WS+ general_fate_sequence WS* R_PAREN -   { -      final Origin origin; -      final ExtensionInstruction instr; - -      origin = -         CONTEXT.get_origin_at -         ( -            ($WORD.getLine()), -            ($WORD.getCharPositionInLine()) -         ); - -      instr = WORLD.extension_instructions().get(($WORD.text)); - -      if (instr == null) -      { -         ErrorManager.handle -         ( -            new UnknownExtensionContentException(origin, ($WORD.text)) -         ); -      } -      else -      { -         $result = -            instr.build -            ( -               WORLD, -               CONTEXT, -               origin, -               ($general_fate_sequence.result) -            ); -      } -   } -     | paragraph     {        $result = @@ -2215,7 +2231,7 @@ returns [Instruction result]           );     } -   | (EVENT_KW | PLAYER_EVENT_KW) +   | PLAYER_EVENT_KW        L_PAREN WS* WORD WS* R_PAREN WS+        {           HIERARCHICAL_VARIABLES.push(new ArrayList()); @@ -2251,7 +2267,7 @@ returns [Instruction result]           );     } -   | (EVENT_KW | PLAYER_EVENT_KW) +   | PLAYER_EVENT_KW        L_PAREN WS* WORD WS+ value_list WS* R_PAREN WS+        {           HIERARCHICAL_VARIABLES.push(new ArrayList()); @@ -4168,10 +4184,10 @@ returns [Computation result]           );     } -   | EXTENSION_VALUE_KW WORD WS+ value_list WS* R_PAREN +   | EXTRA_COMPUTATION_KW WORD WS+ value_list WS* R_PAREN     {        final Origin origin; -      final ExtensionComputation value; +      final ExtensionComputation extra_computation;        origin =           CONTEXT.get_origin_at @@ -4180,26 +4196,40 @@ returns [Computation result]              ($WORD.getCharPositionInLine())           ); -      value = WORLD.extension_value_nodes().get(($WORD.text)); +      extra_computation = WORLD.extra_computations().get(origin, ($WORD.text)); -      if (value == null) -      { -         ErrorManager.handle +      $result = +         extra_computation.build           ( -            new UnknownExtensionContentException(origin, ($WORD.text)) +            WORLD, +            CONTEXT, +            origin, +            ($value_list.result) +         ); +   } + +   | EXTRA_COMPUTATION_KW WORD WS* R_PAREN +   { +      final Origin origin; +      final ExtensionComputation extra_computation; + +      origin = +         CONTEXT.get_origin_at +         ( +            ($WORD.getLine()), +            ($WORD.getCharPositionInLine()) +         ); + +      extra_computation = WORLD.extra_computations().get(origin, ($WORD.text)); + +      $result = +         extra_computation.build +         ( +            WORLD, +            CONTEXT, +            origin, +            ($value_list.result)           ); -      } -      else -      { -         $result = -            value.build -            ( -               WORLD, -               CONTEXT, -               origin, -               ($value_list.result) -            ); -      }     }     | SEQUENCE_KW WORD WS* R_PAREN 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 110c670..ad3abc3 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 @@ -1686,7 +1686,7 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor           content.add(content_cc.get_computation());        } -      result_as_computation = new RichText(content); +      result_as_computation = new Text(content);     }     @Override @@ -1742,7 +1742,7 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor        }        result_as_computation = -         new AddRichTextEffect +         new AddTextEffect           (              n.get_effect().get_name(),              parameters, @@ -1751,9 +1751,9 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor     }     @Override -   public void visit_value_to_rich_text +   public void visit_value_to_text     ( -      final tonkadur.fate.v1.lang.computation.ValueToRichText n +      final tonkadur.fate.v1.lang.computation.ValueToText n     )     throws Throwable     { @@ -1766,7 +1766,7 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor        assimilate(cc);        result_as_computation = -         new RichText(Collections.singletonList(cc.get_computation())); +         new Text(Collections.singletonList(cc.get_computation()));     }     @Override 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 dda6d2e..f1c28fc 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 @@ -28,17 +28,17 @@ import tonkadur.wyrd.v1.lang.computation.Size;  import tonkadur.wyrd.v1.lang.computation.GetLastChoiceIndex;  import tonkadur.wyrd.v1.lang.computation.ValueOf; -import tonkadur.wyrd.v1.lang.instruction.AddChoice; -import tonkadur.wyrd.v1.lang.instruction.AddEventInput; +import tonkadur.wyrd.v1.lang.instruction.AddTextOption; +import tonkadur.wyrd.v1.lang.instruction.AddEventOption;  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.ExtraInstruction;  import tonkadur.wyrd.v1.lang.instruction.Initialize;  import tonkadur.wyrd.v1.lang.instruction.PromptInteger;  import tonkadur.wyrd.v1.lang.instruction.PromptString;  import tonkadur.wyrd.v1.lang.instruction.Remove; -import tonkadur.wyrd.v1.lang.instruction.ResolveChoices; +import tonkadur.wyrd.v1.lang.instruction.ResolveChoice;  import tonkadur.wyrd.v1.lang.instruction.SetPC;  import tonkadur.wyrd.v1.lang.instruction.SetValue; @@ -2594,9 +2594,9 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor     }     @Override -   public void visit_event_call +   public void visit_extra_instruction     ( -      final tonkadur.fate.v1.lang.instruction.EventCall n +      final tonkadur.fate.v1.lang.instruction.ExtraInstructionInstance n     )     throws Throwable     { @@ -2632,7 +2632,13 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor           parameters.add(cc.get_computation());        } -      result.add(new EventCall(n.get_event().get_name(), parameters)); +      result.add +      ( +         new ExtraInstruction +         ( +            n.get_instruction().get_name(), parameters +         ) +      );        for (final ComputationCompiler cc: cc_list)        { @@ -2860,7 +2866,7 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor           result.add(cc.get_init());        } -      labels_only.add(new AddChoice(cc.get_computation())); +      labels_only.add(new AddTextOption(cc.get_computation()));        labels_only.add        ( @@ -3013,7 +3019,7 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        labels_only.add        ( -         new AddEventInput(n.get_input_event().get_name(), params) +         new AddEventOption(n.get_input_event().get_name(), params)        );        for (final ComputationCompiler cc: params_cc) @@ -3185,7 +3191,7 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        compiler.assembler().pop_context_label("choices"); -      result.add(new ResolveChoices()); +      result.add(new ResolveChoice());        result.add        ( diff --git a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/TypeCompiler.java b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/TypeCompiler.java index af4f703..572fa19 100644 --- a/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/TypeCompiler.java +++ b/src/core/src/tonkadur/wyrd/v1/compiler/fate/v1/TypeCompiler.java @@ -90,9 +90,9 @@ public class TypeCompiler           return Type.INT;        } -      if (fate_type.equals(tonkadur.fate.v1.lang.type.Type.RICH_TEXT)) +      if (fate_type.equals(tonkadur.fate.v1.lang.type.Type.TEXT))        { -         return Type.RICH_TEXT; +         return Type.TEXT;        }        if (fate_type.equals(tonkadur.fate.v1.lang.type.Type.STRING)) @@ -176,9 +176,9 @@ public class TypeCompiler           return MapType.MAP_TO_STRING;        } -      if (fate_content_type.equals(tonkadur.fate.v1.lang.type.Type.RICH_TEXT)) +      if (fate_content_type.equals(tonkadur.fate.v1.lang.type.Type.TEXT))        { -         return MapType.MAP_TO_RICH_TEXT; +         return MapType.MAP_TO_TEXT;        }        if (fate_content_type instanceof tonkadur.fate.v1.lang.type.LambdaType) diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/AddTextEffect.java index 30a5538..6eab85f 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/computation/AddRichTextEffect.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/AddTextEffect.java @@ -7,7 +7,7 @@ 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 +public class AddTextEffect extends Text  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -19,7 +19,7 @@ public class AddRichTextEffect extends RichText     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public AddRichTextEffect +   public AddTextEffect     (        final String effect_name,        final List<Computation> effect_parameters, @@ -47,7 +47,7 @@ public class AddRichTextEffect extends RichText     public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      cv.visit_add_rich_text_effect(this); +      cv.visit_add_text_effect(this);     }     /**** Misc. ****************************************************************/ @@ -58,7 +58,7 @@ public class AddRichTextEffect extends RichText        sb = new StringBuilder(); -      sb.append("(AddRichTextEffect ("); +      sb.append("(AddTextEffect (");        sb.append(effect_name);        for (final Computation param: effect_parameters) 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 74accf3..22e25f9 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Newline.java @@ -4,7 +4,7 @@ import java.util.ArrayList;  import tonkadur.wyrd.v1.lang.meta.ComputationVisitor; -public class Newline extends RichText +public class Newline extends Text  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/Text.java index 2a0a001..bf0c148 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/computation/RichText.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/Text.java @@ -7,7 +7,7 @@ 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 +public class Text extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -18,9 +18,9 @@ public class RichText extends Computation     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public RichText (final List<Computation> content) +   public Text (final List<Computation> content)     { -      super(Type.RICH_TEXT); +      super(Type.TEXT);        this.content = content;     } @@ -35,7 +35,7 @@ public class RichText extends Computation     public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      cv.visit_rich_text(this); +      cv.visit_text(this);     }     /**** Misc. ****************************************************************/ @@ -46,7 +46,7 @@ public class RichText extends Computation        sb = new StringBuilder(); -      sb.append("(RichText "); +      sb.append("(Text ");        for (final Computation text: content)        { diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddEventOption.java index 221d47d..26ea3d5 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/EventCall.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddEventOption.java @@ -6,7 +6,7 @@ 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 +public class AddEventOption extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -18,7 +18,7 @@ public class EventCall extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public EventCall (final String name, final List<Computation> parameters) +   public AddEventOption (final String name, final List<Computation> parameters)     {        this.name = name;        this.parameters = parameters; @@ -39,7 +39,7 @@ public class EventCall extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_event_call(this); +      iv.visit_add_event_option(this);     }     /**** Misc. ****************************************************************/ @@ -50,7 +50,7 @@ public class EventCall extends Instruction        sb = new StringBuilder(); -      sb.append("(EventCall "); +      sb.append("(AddEventOption ");        sb.append(name);        for (final Computation param: parameters) diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddTextOption.java index 02f4bc8..d89cbee 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddChoice.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddTextOption.java @@ -4,7 +4,7 @@ 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 +public class AddTextOption extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -15,7 +15,7 @@ public class AddChoice extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public AddChoice (final Computation label) +   public AddTextOption (final Computation label)     {        this.label = label;     } @@ -30,7 +30,7 @@ public class AddChoice extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_add_choice(this); +      iv.visit_add_text_option(this);     }     /**** Misc. ****************************************************************/ @@ -41,7 +41,7 @@ public class AddChoice extends Instruction        sb = new StringBuilder(); -      sb.append("(AddChoice "); +      sb.append("(AddTextOption ");        sb.append(label.toString());        sb.append(")"); diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddEventInput.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ExtraInstruction.java index 5d476a5..08b0bfc 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/AddEventInput.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ExtraInstruction.java @@ -6,7 +6,7 @@ import tonkadur.wyrd.v1.lang.meta.Computation;  import tonkadur.wyrd.v1.lang.meta.Instruction;  import tonkadur.wyrd.v1.lang.meta.InstructionVisitor; -public class AddEventInput extends Instruction +public class ExtraInstruction extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -18,7 +18,11 @@ public class AddEventInput extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public AddEventInput (final String name, final List<Computation> parameters) +   public ExtraInstruction +   ( +      final String name, +      final List<Computation> parameters +   )     {        this.name = name;        this.parameters = parameters; @@ -39,7 +43,7 @@ public class AddEventInput extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_add_event_input(this); +      iv.visit_extra_instruction(this);     }     /**** Misc. ****************************************************************/ @@ -50,7 +54,7 @@ public class AddEventInput extends Instruction        sb = new StringBuilder(); -      sb.append("(AddEventInput "); +      sb.append("(ExtraInstruction ");        sb.append(name);        for (final Computation param: parameters) diff --git a/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoice.java index 27fdc79..23adce1 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoices.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/instruction/ResolveChoice.java @@ -3,7 +3,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 +public class ResolveChoice extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -13,7 +13,7 @@ public class ResolveChoices extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public ResolveChoices () +   public ResolveChoice ()     {     } @@ -21,13 +21,13 @@ public class ResolveChoices extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_resolve_choices(this); +      iv.visit_resolve_choice(this);     }     /**** Misc. ****************************************************************/     @Override     public String toString ()     { -      return "(ResolveChoices)"; +      return "(ResolveChoice)";     }  } diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java index 1d9b2be..d1fefb8 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/ComputationVisitor.java @@ -4,7 +4,10 @@ import tonkadur.wyrd.v1.lang.computation.*;  public interface ComputationVisitor  { -   public void visit_add_rich_text_effect (final AddRichTextEffect n) +   public void visit_extra_computation (final ExtraComputation n) +   throws Throwable; + +   public void visit_add_text_effect (final AddTextEffect n)     throws Throwable;     public void visit_cast (final Cast n) @@ -34,7 +37,7 @@ public interface ComputationVisitor     public void visit_get_last_choice_index (final GetLastChoiceIndex n)     throws Throwable; -   public void visit_rich_text (final RichText n) +   public void visit_text (final Text n)     throws Throwable;     public void visit_size (final Size n) diff --git a/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java index 2d79298..e398de6 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/meta/InstructionVisitor.java @@ -4,10 +4,13 @@ import tonkadur.wyrd.v1.lang.instruction.*;  public interface InstructionVisitor  { -   public void visit_add_choice (final AddChoice n) +   public void visit_extra_instruction (final ExtraInstruction n)     throws Throwable; -   public void visit_add_event_input (final AddEventInput n) +   public void visit_add_text_option (final AddTextOption n) +   throws Throwable; + +   public void visit_add_event_option (final AddEventOption n)     throws Throwable;     public void visit_assert (final Assert n) @@ -19,13 +22,10 @@ public interface InstructionVisitor     public void visit_end (final End n)     throws Throwable; -   public void visit_event_call (final EventCall n) -   throws Throwable; -     public void visit_remove (final Remove n)     throws Throwable; -   public void visit_resolve_choices (final ResolveChoices n) +   public void visit_resolve_choice (final ResolveChoice n)     throws Throwable;     public void visit_set_pc (final SetPC n) diff --git a/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java b/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java index c9586ee..ea2c005 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/type/MapType.java @@ -6,14 +6,14 @@ public class MapType extends Type     public static final MapType MAP_TO_FLOAT;     public static final MapType MAP_TO_INT;     public static final MapType MAP_TO_STRING; -   public static final MapType MAP_TO_RICH_TEXT; +   public static final MapType MAP_TO_TEXT;     static     {        MAP_TO_BOOL = new MapType(Type.BOOL);        MAP_TO_FLOAT = new MapType(Type.FLOAT);        MAP_TO_INT = new MapType(Type.INT); -      MAP_TO_RICH_TEXT = new MapType(Type.RICH_TEXT); +      MAP_TO_TEXT = new MapType(Type.TEXT);        MAP_TO_STRING = new MapType(Type.STRING);     } diff --git a/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java b/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java index d123104..5b88264 100644 --- a/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java +++ b/src/core/src/tonkadur/wyrd/v1/lang/type/Type.java @@ -5,7 +5,7 @@ public class Type     public static final Type BOOL;     public static final Type FLOAT;     public static final Type INT; -   public static final Type RICH_TEXT; +   public static final Type TEXT;     public static final Type STRING;     static @@ -13,7 +13,7 @@ public class Type        BOOL = new Type("bool");        FLOAT = new Type("float");        INT = new Type("int"); -      RICH_TEXT = new Type("rich_text"); +      TEXT = new Type("text");        STRING = new Type("string");     } | 


