| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
27 files changed, 347 insertions, 128 deletions
| diff --git a/src/core/src/tonkadur/fate/v1/lang/TextEffect.java b/src/core/src/tonkadur/fate/v1/lang/TextEffect.java index 2ac4000..930218f 100644 --- a/src/core/src/tonkadur/fate/v1/lang/TextEffect.java +++ b/src/core/src/tonkadur/fate/v1/lang/TextEffect.java @@ -60,7 +60,9 @@ public class TextEffect extends DeclaredEntity        final String name     )     { -      super(origin, signature, name); +      super(origin, name); + +      this.signature = signature;     }     /**** Accessors ************************************************************/ diff --git a/src/core/src/tonkadur/fate/v1/lang/World.java b/src/core/src/tonkadur/fate/v1/lang/World.java index f6caa7c..34b2364 100644 --- a/src/core/src/tonkadur/fate/v1/lang/World.java +++ b/src/core/src/tonkadur/fate/v1/lang/World.java @@ -318,7 +318,7 @@ public class World           //type_collection.add(Type.LIST);           //type_collection.add(Type.SET);           type_collection.add(Type.STRING); -         type_collection.add(Type.RICH_TEXT); +         type_collection.add(Type.TEXT);        }        catch (final Throwable t)        { diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java b/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java index d46d20f..5f5b572 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ExtraComputationInstance.java @@ -4,9 +4,12 @@ import java.util.List;  import tonkadur.parser.Context;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.meta.Computation; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.ExtraComputation; +import tonkadur.fate.v1.lang.meta.RecurrentChecks;  public class ExtraComputationInstance extends Computation  { @@ -24,7 +27,7 @@ public class ExtraComputationInstance extends Computation        final List<Computation> parameters     )     { -      super(origin, computation.get_result_type()); +      super(origin, computation.get_returned_type());        this.computation = computation;        this.parameters = parameters; @@ -34,7 +37,7 @@ public class ExtraComputationInstance extends Computation     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public ExtraComputationInstance build +   public static ExtraComputationInstance build     (        final Origin origin,        final ExtraComputation computation, 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 9a5b880..b05021d 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/Newline.java @@ -3,9 +3,9 @@ package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin;  import tonkadur.fate.v1.lang.meta.ComputationVisitor; -import tonkadur.fate.v1.lang.meta.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode; -public class Newline extends RichTextNode +public class Newline extends TextNode  {     /***************************************************************************/     /**** PUBLIC ***************************************************************/ 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 62c72f3..26b08b4 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/Paragraph.java @@ -5,14 +5,14 @@ import java.util.List;  import tonkadur.parser.Origin;  import tonkadur.fate.v1.lang.meta.ComputationVisitor; -import tonkadur.fate.v1.lang.meta.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode; -public class Paragraph extends RichTextNode +public class Paragraph extends TextNode  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final List<RichTextNode> content; +   protected final List<TextNode> content;     /***************************************************************************/     /**** PROTECTED ************************************************************/ @@ -26,7 +26,7 @@ public class Paragraph extends RichTextNode     public Paragraph     (        final Origin origin, -      final List<RichTextNode> content +      final List<TextNode> content     )     {        super(origin); @@ -42,7 +42,7 @@ public class Paragraph extends RichTextNode        cv.visit_paragraph(this);     } -   public List<RichTextNode> get_content () +   public List<TextNode> get_content ()     {        return content;     } @@ -55,7 +55,7 @@ public class Paragraph extends RichTextNode        sb.append("(Paragraph "); -      for (final RichTextNode text: content) +      for (final TextNode text: content)        {           sb.append(content.toString());        } 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 9829d37..17fda37 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/TextWithEffect.java @@ -8,18 +8,18 @@ import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.TextEffect;  import tonkadur.fate.v1.lang.meta.ComputationVisitor; -import tonkadur.fate.v1.lang.meta.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode;  import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.RecurrentChecks; -public class TextWithEffect extends RichTextNode +public class TextWithEffect extends TextNode  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/     protected final TextEffect effect;     protected final List<Computation> parameters; -   protected final RichTextNode text; +   protected final TextNode text;     /***************************************************************************/     /**** PROTECTED ************************************************************/ @@ -30,7 +30,7 @@ public class TextWithEffect extends RichTextNode        final Origin origin,        final TextEffect effect,        final List<Computation> parameters, -      final RichTextNode text +      final TextNode text     )     {        super(origin); @@ -49,7 +49,7 @@ public class TextWithEffect extends RichTextNode        final Origin origin,        final TextEffect effect,        final List<Computation> parameters, -      final RichTextNode text +      final TextNode text     )     throws ParsingError     { @@ -81,7 +81,7 @@ public class TextWithEffect extends RichTextNode        return parameters;     } -   public RichTextNode get_text () +   public TextNode get_text ()     {        return text;     } diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java index b21024b..e81f8cd 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java @@ -8,10 +8,10 @@ import tonkadur.fate.v1.error.IncomparableTypeException;  import tonkadur.fate.v1.lang.type.Type;  import tonkadur.fate.v1.lang.meta.ComputationVisitor; -import tonkadur.fate.v1.lang.meta.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode;  import tonkadur.fate.v1.lang.meta.Computation; -public class ValueToRichText extends RichTextNode +public class ValueToText extends TextNode  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -22,7 +22,7 @@ public class ValueToRichText extends RichTextNode     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected ValueToRichText (final Computation value) +   protected ValueToText (final Computation value)     {        super(value.get_origin()); @@ -33,7 +33,7 @@ public class ValueToRichText extends RichTextNode     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static ValueToRichText build (final Computation value) +   public static ValueToText build (final Computation value)     throws        IncompatibleTypeException,        IncomparableTypeException @@ -45,14 +45,14 @@ public class ValueToRichText extends RichTextNode        if        (           value_base_type.equals(Type.STRING) -         || value_base_type.equals(Type.RICH_TEXT) +         || value_base_type.equals(Type.TEXT)        )        { -         return new ValueToRichText(value); +         return new ValueToText(value);        }        return -         new ValueToRichText +         new ValueToText           (              Cast.build              ( @@ -69,7 +69,7 @@ public class ValueToRichText extends RichTextNode     public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      cv.visit_value_to_rich_text(this); +      cv.visit_value_to_text(this);     }     public Computation get_value () @@ -83,7 +83,7 @@ public class ValueToRichText extends RichTextNode     {        final StringBuilder sb = new StringBuilder(); -      sb.append("(ValueToRichText "); +      sb.append("(ValueToText ");        sb.append(value.toString());        sb.append(")"); 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 d487d38..4a6e7bc 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/Assert.java @@ -5,7 +5,7 @@ import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.meta.InstructionVisitor;  import tonkadur.fate.v1.lang.meta.Instruction; -import tonkadur.fate.v1.lang.meta.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode;  import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.RecurrentChecks; @@ -17,7 +17,7 @@ public class Assert extends Instruction     /**** MEMBERS **************************************************************/     /***************************************************************************/     protected final Computation condition; -   protected final RichTextNode message; +   protected final TextNode message;     /***************************************************************************/     /**** PROTECTED ************************************************************/ @@ -27,7 +27,7 @@ public class Assert extends Instruction     (        final Origin origin,        final Computation condition, -      final RichTextNode message +      final TextNode message     )     {        super(origin); @@ -44,7 +44,7 @@ public class Assert extends Instruction     (        final Origin origin,        final Computation condition, -      final RichTextNode message +      final TextNode message     )     throws ParsingError     { @@ -66,7 +66,7 @@ public class Assert extends Instruction        return condition;     } -   public RichTextNode get_message () +   public TextNode get_message ()     {        return message;     } 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 5e95601..5e85d79 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/Display.java @@ -10,14 +10,14 @@ 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.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode;  public class Display extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final RichTextNode content; +   protected final TextNode content;     /***************************************************************************/     /**** PROTECTED ************************************************************/ @@ -26,7 +26,7 @@ public class Display extends Instruction     public Display     (        final Origin origin, -      final RichTextNode content +      final TextNode content     )     {        super(origin); @@ -47,7 +47,7 @@ public class Display extends Instruction        iv.visit_display(this);     } -   public RichTextNode get_content () +   public TextNode get_content ()     {        return content;     } diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java b/src/core/src/tonkadur/fate/v1/lang/instruction/EventOption.java index 3daef53..8cfc0a9 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerInput.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/EventOption.java @@ -15,7 +15,7 @@ import tonkadur.fate.v1.lang.meta.Instruction;  import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.RecurrentChecks; -public class PlayerInput extends Instruction +public class EventOption extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ @@ -28,7 +28,7 @@ public class PlayerInput extends Instruction     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected PlayerInput +   protected EventOption     (        final Origin origin,        final Event input_event, @@ -47,7 +47,7 @@ public class PlayerInput extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public PlayerInput +   public EventOption     (        final Origin origin,        final Event input_event, @@ -61,7 +61,7 @@ public class PlayerInput extends Instruction        this.effects = effects;     } -   public static PlayerInput build +   public static EventOption build     (        final Origin origin,        final Event event, @@ -77,7 +77,7 @@ public class PlayerInput extends Instruction           event.get_signature()        ); -      return new PlayerInput(origin, event, parameters, effects); +      return new EventOption(origin, event, parameters, effects);     }     /**** Accessors ************************************************************/ @@ -85,7 +85,7 @@ public class PlayerInput extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_player_input(this); +      iv.visit_event_option(this);     }     public Event get_input_event () @@ -109,7 +109,7 @@ public class PlayerInput extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append("(PlayerInput ("); +      sb.append("(EventOption (");        sb.append(System.lineSeparator());        sb.append(input_event.toString()); diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java b/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java index f333509..f13e05a 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/ExtraInstructionInstance.java @@ -4,9 +4,13 @@ import java.util.List;  import tonkadur.parser.Context;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError; +import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.InstructionVisitor;  import tonkadur.fate.v1.lang.meta.ExtraInstruction; +import tonkadur.fate.v1.lang.meta.RecurrentChecks;  public class ExtraInstructionInstance extends Instruction  { @@ -34,7 +38,7 @@ public class ExtraInstructionInstance extends Instruction     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public ExtraInstructionInstance build +   public static ExtraInstructionInstance build     (        final Origin origin,        final ExtraInstruction instruction, diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PromptInteger.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptInteger.java index 8c76365..9ddf4fb 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/PromptInteger.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptInteger.java @@ -58,7 +58,7 @@ public class PromptInteger extends Instruction     {        RecurrentChecks.assert_can_be_used_as(min, Type.INT);        RecurrentChecks.assert_can_be_used_as(max, Type.INT); -      RecurrentChecks.assert_can_be_used_as(label, Type.RICH_TEXT); +      RecurrentChecks.assert_can_be_used_as(label, Type.TEXT);        RecurrentChecks.assert_can_be_used_as        (           target, diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PromptString.java b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptString.java index a0a8a42..23f1d35 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/PromptString.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/PromptString.java @@ -58,7 +58,7 @@ public class PromptString extends Instruction     {        RecurrentChecks.assert_can_be_used_as(min, Type.INT);        RecurrentChecks.assert_can_be_used_as(max, Type.INT); -      RecurrentChecks.assert_can_be_used_as(label, Type.RICH_TEXT); +      RecurrentChecks.assert_can_be_used_as(label, Type.TEXT);        RecurrentChecks.assert_can_be_used_as        (           target, diff --git a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerOption.java b/src/core/src/tonkadur/fate/v1/lang/instruction/TextOption.java index d6db1e4..9a1774d 100644 --- a/src/core/src/tonkadur/fate/v1/lang/instruction/PlayerOption.java +++ b/src/core/src/tonkadur/fate/v1/lang/instruction/TextOption.java @@ -8,24 +8,24 @@ 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.RichTextNode; +import tonkadur.fate.v1.lang.meta.TextNode; -public class PlayerOption extends Instruction +public class TextOption extends Instruction  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final RichTextNode text; +   protected final TextNode text;     protected final List<Instruction> effects;     /***************************************************************************/     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public PlayerOption +   public TextOption     (        final Origin origin, -      final RichTextNode text, +      final TextNode text,        final List<Instruction> effects     )     { @@ -41,10 +41,10 @@ public class PlayerOption extends Instruction     public void get_visited_by (final InstructionVisitor iv)     throws Throwable     { -      iv.visit_player_option(this); +      iv.visit_text_option(this);     } -   public RichTextNode get_text () +   public TextNode get_text ()     {        return text;     } @@ -60,7 +60,7 @@ public class PlayerOption extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append("(PlayerOption ("); +      sb.append("(TextOption (");        sb.append(System.lineSeparator());        sb.append(text.toString());        sb.append(")"); 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 5d0821e..8e57746 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java @@ -94,7 +94,7 @@ public interface ComputationVisitor     public void visit_text_with_effect (final TextWithEffect n)     throws Throwable; -   public void visit_value_to_rich_text (final ValueToRichText n) +   public void visit_value_to_text (final ValueToText n)     throws Throwable;     public void visit_variable_reference (final VariableReference n) diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java index 703e079..6cefa54 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraComputation.java @@ -1,16 +1,52 @@  package tonkadur.fate.v1.lang.meta; +import java.util.ArrayList;  import java.util.List;  import tonkadur.parser.Context;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.World;  import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.computation.ExtraComputationInstance; +  public class ExtraComputation extends DeclaredEntity  { +   protected static final ExtraComputation ANY; + +   static +   { +      ANY = +         new ExtraComputation +         ( +            Origin.BASE_LANGUAGE, +            Type.ANY, +            /* +             * Use of a space necessary to avoid conflicting with a user created +             * type. +             */ +            "undetermined extra_computation", +            new ArrayList<Type>() +         ); +   } + +   public static ExtraComputation value_on_missing () +   { +      return ANY; +   } + +   @Override +   public /* static */ String get_type_name () +   { +      return "ExtraComputation"; +   } + +   /***************************************************************************/ +   /**** MEMBERS **************************************************************/ +   /***************************************************************************/     protected final Type returned_type;     protected final List<Type> signature; diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java index 10a8f05..cd056dd 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ExtraInstruction.java @@ -1,16 +1,51 @@  package tonkadur.fate.v1.lang.meta; +import java.util.ArrayList;  import java.util.List;  import tonkadur.parser.Context;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.World;  import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.instruction.ExtraInstructionInstance; +  public class ExtraInstruction extends DeclaredEntity  { +   protected static final ExtraInstruction ANY; + +   static +   { +      ANY = +         new ExtraInstruction +         ( +            Origin.BASE_LANGUAGE, +            /* +             * Use of a space necessary to avoid conflicting with a user created +             * type. +             */ +            "undetermined extra_instruction", +            new ArrayList<Type>() +         ); +   } + +   public static ExtraInstruction value_on_missing () +   { +      return ANY; +   } + +   @Override +   public /* static */ String get_type_name () +   { +      return "ExtraInstruction"; +   } + +   /***************************************************************************/ +   /**** MEMBERS **************************************************************/ +   /***************************************************************************/     protected final List<Type> signature;     /***************************************************************************/ @@ -52,7 +87,7 @@ public class ExtraInstruction extends DeclaredEntity        final World world,        final Context context,        final Origin origin, -      final List<Instruction> parameters +      final List<Computation> parameters     )     throws ParsingError     { 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 6426cfb..922fbc1 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java @@ -122,10 +122,10 @@ public interface InstructionVisitor     public void visit_player_choice (final PlayerChoice n)     throws Throwable; -   public void visit_player_option (final PlayerOption n) +   public void visit_text_option (final TextOption n)     throws Throwable; -   public void visit_player_input (final PlayerInput n) +   public void visit_event_option (final EventOption n)     throws Throwable;     public void visit_remove_all_of_element (final RemoveAllOfElement n) diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/RichTextNode.java b/src/core/src/tonkadur/fate/v1/lang/meta/TextNode.java index 1afd6fe..eec40bb 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/RichTextNode.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/TextNode.java @@ -5,15 +5,15 @@ import tonkadur.parser.Origin;  import tonkadur.fate.v1.lang.type.Type; -public abstract class RichTextNode extends Computation +public abstract class TextNode extends Computation  {     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected RichTextNode (final Origin origin) +   protected TextNode (final Origin origin)     { -      super(origin, Type.RICH_TEXT); +      super(origin, Type.TEXT);     }     /***************************************************************************/ diff --git a/src/core/src/tonkadur/fate/v1/lang/type/Type.java b/src/core/src/tonkadur/fate/v1/lang/type/Type.java index ce93e9e..850afeb 100644 --- a/src/core/src/tonkadur/fate/v1/lang/type/Type.java +++ b/src/core/src/tonkadur/fate/v1/lang/type/Type.java @@ -28,7 +28,7 @@ public class Type extends DeclaredEntity     public static final Type LAMBDA;     public static final Type LIST;     public static final Type REF; -   public static final Type RICH_TEXT; +   public static final Type TEXT;     public static final Type SEQUENCE;     public static final Type SET;     public static final Type STRING; @@ -57,7 +57,7 @@ public class Type extends DeclaredEntity        LAMBDA = new Type(base, null, "lambda");        LIST = new Type(base, null, "list");        REF = new Type(base, null, "ref"); -      RICH_TEXT = new Type(base, null, "text"); +      TEXT = new Type(base, null, "text");        SEQUENCE = new Type(base, null, "sequence");        SET = new Type(base, null, "set");        STRING = new Type(base, null, "string"); @@ -72,7 +72,7 @@ public class Type extends DeclaredEntity        ALL_TYPES.add(LAMBDA);        ALL_TYPES.add(LIST);        ALL_TYPES.add(REF); -      ALL_TYPES.add(RICH_TEXT); +      ALL_TYPES.add(TEXT);        ALL_TYPES.add(SEQUENCE);        ALL_TYPES.add(SET);        ALL_TYPES.add(STRING); diff --git a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 index cd96bb4..b333202 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 @@ -41,7 +41,7 @@ DECLARE_DICT_TYPE_KW: L_PAREN     ('declare'|'define'|'def')US('dict'|('struct''ure'?))(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_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+; @@ -111,7 +111,7 @@ NEW_KW: L_PAREN ('new'|'reserve'|'create') SEP+;  NOT_KW: L_PAREN ('not'|'~'|'!') SEP+;  ONE_IN_KW: L_PAREN ('exactly'US)?'one'(US'in')? SEP+;  OR_KW: L_PAREN ('or'|'\\/') SEP+; -RICH_TEXT_KW: L_PAREN (('rich'US)?'text') SEP+; +TEXT_KW: L_PAREN 'text' SEP+;  PARTITION_KW: L_PAREN 'partition' SEP+;  IMP_PARTITION_KW: L_PAREN 'partition!' SEP+;  INDEXED_PARTITION_KW: L_PAREN 'indexed'US'partition' SEP+; @@ -125,8 +125,8 @@ IMP_PUSH_LEFT_KW: L_PAREN 'push'US'left!' SEP+;  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 ('event'|'user'US'event'|'player'US'event') SEP+; +TEXT_OPTION_KW: L_PAREN ('option'|'user'US'option'|'player'US'option') SEP+; +EVENT_OPTION_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 612d77d..519a01c 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -363,7 +363,7 @@ first_level_fate_instr:              ($DECLARE_EXTRA_INSTRUCTION_KW.getCharPositionInLine())           ); -      new_event = +      extra_instruction =           new ExtraInstruction           (              start_origin, @@ -386,7 +386,7 @@ first_level_fate_instr:              ($DECLARE_EXTRA_INSTRUCTION_KW.getCharPositionInLine())           ); -      new_event = +      extra_instruction =           new ExtraInstruction           (              start_origin, @@ -445,50 +445,50 @@ first_level_fate_instr:        WORLD.extra_computations().add(extra_computation);     } -   | DECLARE_INPUT_EVENT_TYPE_KW new_reference_name WS* R_PAREN +   | DECLARE_EVENT_TYPE_KW new_reference_name WS* R_PAREN     {        final Origin start_origin; -      final InputEvent new_event; +      final Event new_event;        start_origin =           CONTEXT.get_origin_at           ( -            ($DECLARE_INPUT_EVENT_TYPE_KW.getLine()), -            ($DECLARE_INPUT_EVENT_TYPE_KW.getCharPositionInLine()) +            ($DECLARE_EVENT_TYPE_KW.getLine()), +            ($DECLARE_EVENT_TYPE_KW.getCharPositionInLine())           );        new_event = -         new InputEvent +         new Event           (              start_origin,              new ArrayList<Type>(),              ($new_reference_name.result)           ); -      WORLD.input_events().add(new_event); +      WORLD.events().add(new_event);     } -   | DECLARE_INPUT_EVENT_TYPE_KW new_reference_name WS+ type_list WS* R_PAREN +   | DECLARE_EVENT_TYPE_KW new_reference_name WS+ type_list WS* R_PAREN     {        final Origin start_origin; -      final InputEvent new_event; +      final Event new_event;        start_origin =           CONTEXT.get_origin_at           ( -            ($DECLARE_INPUT_EVENT_TYPE_KW.getLine()), -            ($DECLARE_INPUT_EVENT_TYPE_KW.getCharPositionInLine()) +            ($DECLARE_EVENT_TYPE_KW.getLine()), +            ($DECLARE_EVENT_TYPE_KW.getCharPositionInLine())           );        new_event = -         new InputEvent +         new Event           (              start_origin,              ($type_list.result),              ($new_reference_name.result)           ); -      WORLD.input_events().add(new_event); +      WORLD.events().add(new_event);     } @@ -549,6 +549,7 @@ first_level_fate_instr:        CONTEXT.pop();     } +   /*     | EXTENSION_FIRST_LEVEL_KW WORD WS+ general_fate_sequence WS* R_PAREN     {        final Origin origin; @@ -575,6 +576,7 @@ first_level_fate_instr:           instr.build(WORLD, CONTEXT, origin, ($general_fate_sequence.result));        }     } +   */  ;  catch [final Throwable e]  { @@ -2203,7 +2205,7 @@ returns [List<Instruction> result]  player_choice  returns [Instruction result]  : -   PLAYER_OPTION_KW +   TEXT_OPTION_KW        L_PAREN WS* paragraph WS* R_PAREN WS+        {           HIERARCHICAL_VARIABLES.push(new ArrayList()); @@ -2219,19 +2221,19 @@ returns [Instruction result]     R_PAREN     {        $result = -         new PlayerOption +         new TextOption           (              CONTEXT.get_origin_at              ( -               ($PLAYER_OPTION_KW.getLine()), -               ($PLAYER_OPTION_KW.getCharPositionInLine()) +               ($TEXT_OPTION_KW.getLine()), +               ($TEXT_OPTION_KW.getCharPositionInLine())              ),              ($paragraph.result),              ($general_fate_sequence.result)           );     } -   | PLAYER_EVENT_KW +   | EVENT_OPTION_KW        L_PAREN WS* WORD WS* R_PAREN WS+        {           HIERARCHICAL_VARIABLES.push(new ArrayList()); @@ -2247,7 +2249,7 @@ returns [Instruction result]     R_PAREN     {        final Origin origin; -      final InputEvent event; +      final Event event;        origin =           CONTEXT.get_origin_at @@ -2256,10 +2258,10 @@ returns [Instruction result]              ($L_PAREN.getCharPositionInLine())           ); -      event = WORLD.input_events().get(origin, ($WORD.text)); +      event = WORLD.events().get(origin, ($WORD.text));        $result = -         new PlayerInput +         new EventOption           (              origin,              event, @@ -2267,7 +2269,7 @@ returns [Instruction result]           );     } -   | PLAYER_EVENT_KW +   | EVENT_OPTION_KW        L_PAREN WS* WORD WS+ value_list WS* R_PAREN WS+        {           HIERARCHICAL_VARIABLES.push(new ArrayList()); @@ -2283,7 +2285,7 @@ returns [Instruction result]     R_PAREN     {        final Origin origin; -      final InputEvent event; +      final Event event;        origin =           CONTEXT.get_origin_at @@ -2292,10 +2294,10 @@ returns [Instruction result]              ($L_PAREN.getCharPositionInLine())           ); -      event = WORLD.input_events().get(origin, ($WORD.text)); +      event = WORLD.events().get(origin, ($WORD.text));        $result = -         PlayerInput.build +         EventOption.build           (              origin,              event, @@ -2570,10 +2572,10 @@ catch [final Throwable e]  }  paragraph -returns [RichTextNode result] +returns [TextNode result]  @init  { -   final List<RichTextNode> content = new ArrayList(); +   final List<TextNode> content = new ArrayList();  }  :     first=text @@ -2587,7 +2589,7 @@ returns [RichTextNode result]           {              content.add              ( -               ValueToRichText.build +               ValueToText.build                 (                    Constant.build_string                    ( @@ -2635,10 +2637,10 @@ catch [final Throwable e]  }  text -returns [RichTextNode result]: +returns [TextNode result]:     sentence     { -      $result = ValueToRichText.build(($sentence.result)); +      $result = ValueToText.build(($sentence.result));     }     | ENABLE_TEXT_EFFECT_KW WORD WS+ paragraph WS* R_PAREN @@ -2720,7 +2722,7 @@ returns [RichTextNode result]:     | non_text_value     { -      $result = ValueToRichText.build(($non_text_value.result)); +      $result = ValueToText.build(($non_text_value.result));     }  ;  catch [final Throwable e] @@ -3703,7 +3705,7 @@ returns [Computation result]        $result = ($sentence.result);     } -   | RICH_TEXT_KW paragraph WS* R_PAREN +   | TEXT_KW paragraph WS* R_PAREN     {        $result = ($paragraph.result);     } @@ -4187,7 +4189,7 @@ returns [Computation result]     | EXTRA_COMPUTATION_KW WORD WS+ value_list WS* R_PAREN     {        final Origin origin; -      final ExtensionComputation extra_computation; +      final ExtraComputation extra_computation;        origin =           CONTEXT.get_origin_at @@ -4199,7 +4201,7 @@ returns [Computation result]        extra_computation = WORLD.extra_computations().get(origin, ($WORD.text));        $result = -         extra_computation.build +         extra_computation.instantiate           (              WORLD,              CONTEXT, @@ -4211,7 +4213,7 @@ returns [Computation result]     | EXTRA_COMPUTATION_KW WORD WS* R_PAREN     {        final Origin origin; -      final ExtensionComputation extra_computation; +      final ExtraComputation extra_computation;        origin =           CONTEXT.get_origin_at @@ -4223,12 +4225,12 @@ returns [Computation result]        extra_computation = WORLD.extra_computations().get(origin, ($WORD.text));        $result = -         extra_computation.build +         extra_computation.instantiate           (              WORLD,              CONTEXT,              origin, -            ($value_list.result) +            new ArrayList<Computation>()           );     } 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 ad3abc3..70d3ed1 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 @@ -1308,6 +1308,43 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor     }     @Override +   public void visit_extra_computation +   ( +      final tonkadur.fate.v1.lang.computation.ExtraComputationInstance n +   ) +   throws Throwable +   { +      final List<Computation> parameters; + +      parameters = new ArrayList<Computation>(); + +      for (final tonkadur.fate.v1.lang.meta.Computation p: n.get_parameters()) +      { +         final ComputationCompiler cc; + +         cc = new ComputationCompiler(compiler); + +         p.get_visited_by(cc); + +         assimilate(cc); + +         parameters.add(cc.get_computation()); +      } + +      result_as_computation = +         new ExtraComputation +         ( +            TypeCompiler.compile +            ( +               compiler, +               n.get_computation_type().get_returned_type() +            ), +            n.get_computation_type().get_name(), +            parameters +         ); +   } + +   @Override     public void visit_is_empty     (        final tonkadur.fate.v1.lang.computation.IsEmpty n 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 f1c28fc..8597920 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 @@ -2636,7 +2636,8 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        (           new ExtraInstruction           ( -            n.get_instruction().get_name(), parameters +            n.get_instruction_type().get_name(), +            parameters           )        ); @@ -2837,16 +2838,16 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor     }     @Override -   public void visit_player_option +   public void visit_text_option     ( -      final tonkadur.fate.v1.lang.instruction.PlayerOption n +      final tonkadur.fate.v1.lang.instruction.TextOption n     )     throws Throwable     {        /* -       * Fate: (player_choice label i0) +       * Fate: (text_option label i0)         * -       * Wyrd (add_choice label i0) +       * Wyrd (add_text_option label i0)         */        final List<Instruction> to_next, labels_only;        final ComputationCompiler cc; @@ -2974,16 +2975,16 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor     }     @Override -   public void visit_player_input +   public void visit_event_option     ( -      final tonkadur.fate.v1.lang.instruction.PlayerInput n +      final tonkadur.fate.v1.lang.instruction.EventOption n     )     throws Throwable     {        /* -       * Fate: (player_choice label i0) +       * Fate: (event_option label i0)         * -       * Wyrd (add_choice label i0) +       * Wyrd (add_event_option label i0)         */        final List<Instruction> to_next, labels_only;        final List<ComputationCompiler> params_cc; diff --git a/src/core/src/tonkadur/wyrd/v1/lang/computation/ExtraComputation.java b/src/core/src/tonkadur/wyrd/v1/lang/computation/ExtraComputation.java new file mode 100644 index 0000000..99b694f --- /dev/null +++ b/src/core/src/tonkadur/wyrd/v1/lang/computation/ExtraComputation.java @@ -0,0 +1,74 @@ +package tonkadur.wyrd.v1.lang.computation; + +import java.util.List; + +import tonkadur.wyrd.v1.lang.type.Type; + +import tonkadur.wyrd.v1.lang.meta.Computation; +import tonkadur.wyrd.v1.lang.meta.ComputationVisitor; + +public class ExtraComputation extends Computation +{ +   /***************************************************************************/ +   /**** MEMBERS **************************************************************/ +   /***************************************************************************/ +   protected final String name; +   protected final List<Computation> parameters; + +   /***************************************************************************/ +   /**** PUBLIC ***************************************************************/ +   /***************************************************************************/ +   /**** Constructors *********************************************************/ +   public ExtraComputation +   ( +      final Type type, +      final String name, +      final List<Computation> parameters +   ) +   { +      super(type); + +      this.name = name; +      this.parameters = parameters; +   } + +   /**** Accessors ************************************************************/ +   public String get_name () +   { +      return name; +   } + +   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("(ExtraComputation "); +      sb.append(name); + +      for (final Computation param: parameters) +      { +         sb.append(" "); +         sb.append(param.toString()); +      } + +      sb.append(")"); + +      return sb.toString(); +   } +} diff --git a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java index 132e658..4db47a9 100644 --- a/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/ComputationCompiler.java @@ -12,7 +12,7 @@ public class ComputationCompiler implements ComputationVisitor  {     protected JSONObject result; -   public void visit_add_rich_text_effect (final AddRichTextEffect n) +   public void visit_add_text_effect (final AddTextEffect n)     throws Throwable     {        final JSONArray params, content; @@ -44,7 +44,7 @@ public class ComputationCompiler implements ComputationVisitor        result = new JSONObject(); -      result.put("category", "add_rich_text_effect"); +      result.put("category", "add_text_effect");        result.put("effect", n.get_effect_name());        result.put("parameters", params);        result.put("content", content); @@ -185,7 +185,7 @@ public class ComputationCompiler implements ComputationVisitor        result.put("extra", param_cc.get_result());     } -   public void visit_rich_text (final RichText n) +   public void visit_text (final Text n)     throws Throwable     {        final JSONArray content; @@ -205,7 +205,7 @@ public class ComputationCompiler implements ComputationVisitor        result = new JSONObject(); -      result.put("category", "rich_text"); +      result.put("category", "text");        result.put("content", content);     } @@ -224,6 +224,31 @@ public class ComputationCompiler implements ComputationVisitor        result.put("reference", cc.get_result());     } +   public void visit_extra_computation (final ExtraComputation n) +   throws Throwable +   { +      final JSONArray params; + +      params = new JSONArray(); + +      for (final Computation c: n.get_parameters()) +      { +         final ComputationCompiler cc; + +         cc = new ComputationCompiler(); + +         c.get_visited_by(cc); + +         params.add(cc.get_result()); +      } + +      result = new JSONObject(); + +      result.put("category", "extra_computation"); +      result.put("name", n.get_name()); +      result.put("parameters", params); +   } +     public void visit_value_of (final ValueOf n)     throws Throwable     { diff --git a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java index 86b2a56..d33901d 100644 --- a/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java +++ b/src/json-export/src/tonkadur/jsonexport/InstructionCompiler.java @@ -12,7 +12,7 @@ public class InstructionCompiler implements InstructionVisitor  {     protected JSONObject result; -   public void visit_add_choice (final AddChoice n) +   public void visit_add_text_option (final AddTextOption n)     throws Throwable     {        final ComputationCompiler label_cc; @@ -23,11 +23,11 @@ public class InstructionCompiler implements InstructionVisitor        result = new JSONObject(); -      result.put("category", "add_choice"); +      result.put("category", "add_text_option");        result.put("label", label_cc.get_result());     } -   public void visit_add_event_input (final AddEventInput n) +   public void visit_add_event_option (final AddEventOption n)     throws Throwable     {        final JSONArray params; @@ -47,7 +47,7 @@ public class InstructionCompiler implements InstructionVisitor        result = new JSONObject(); -      result.put("category", "add_event_input"); +      result.put("category", "add_event_option");        result.put("event", n.get_name());        result.put("parameters", params);     } @@ -93,7 +93,7 @@ public class InstructionCompiler implements InstructionVisitor        result.put("category", "end");     } -   public void visit_event_call (final EventCall n) +   public void visit_extra_instruction (final ExtraInstruction n)     throws Throwable     {        final JSONArray params; @@ -113,8 +113,8 @@ public class InstructionCompiler implements InstructionVisitor        result = new JSONObject(); -      result.put("category", "event_call"); -      result.put("event", n.get_name()); +      result.put("category", "extra_instruction"); +      result.put("name", n.get_name());        result.put("parameters", params);     } @@ -133,12 +133,12 @@ public class InstructionCompiler implements InstructionVisitor        result.put("reference", cc.get_result());     } -   public void visit_resolve_choices (final ResolveChoices n) +   public void visit_resolve_choice (final ResolveChoice n)     throws Throwable     {        result = new JSONObject(); -      result.put("category", "resolve_choices"); +      result.put("category", "resolve_choice");     }     public void visit_set_pc (final SetPC n) | 


