| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
8 files changed, 114 insertions, 314 deletions
| diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java index 9ca1042..d042dd0 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java @@ -10,8 +10,8 @@ import tonkadur.fate.v1.lang.type.CollectionType;  import tonkadur.fate.v1.lang.instruction.Map; -import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.ComputationVisitor; +import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.Reference;  public class MapComputation extends Computation diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveAllOfElementComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveAllOfElementComputation.java index dc6bdf5..fb6b9da 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveAllOfElementComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveAllOfElementComputation.java @@ -10,7 +10,6 @@ import tonkadur.fate.v1.lang.instruction.RemoveAllOfElement;  import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; -import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.Reference;  public class RemoveAllOfElementComputation extends Computation diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java index 3bf0104..42e61b7 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java @@ -1,50 +1,43 @@ -package tonkadur.fate.v1.lang.instruction; - -import tonkadur.error.ErrorManager; +package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin; +import tonkadur.fate.v1.error.ConflictingTypeException;  import tonkadur.fate.v1.error.IncomparableTypeException;  import tonkadur.fate.v1.error.InvalidTypeException; -import tonkadur.fate.v1.lang.type.CollectionType; -import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.instruction.RemoveElementAt; -import tonkadur.fate.v1.lang.meta.InstructionVisitor; -import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation;  import tonkadur.fate.v1.lang.meta.Reference; -public class RemoveElementAt extends Instruction +public class RemoveElementAt extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final Computation index; -   protected final Reference collection; +   protected final RemoveElementAt instruction;     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected RemoveElementAt +   protected RemoveElementAtComputation     ( -      final Origin origin, -      final Computation index, -      final Reference collection +      final RemoveElementAt instruction     )     { -      super(origin); +      super(instruction.get_origin(), instruction.get_collection().get_type()); -      this.collection = collection; -      this.index = index; +      this.instruction = instruction;     }     /***************************************************************************/     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static RemoveElementAt build +   public static RemoveElementAtComputation build     (        final Origin origin,        final Computation index, @@ -54,63 +47,24 @@ public class RemoveElementAt extends Instruction        InvalidTypeException,        IncomparableTypeException     { -      final Type collection_type, hint; - -      collection_type = collection.get_type(); - -      if (!(collection_type instanceof CollectionType)) -      { -         ErrorManager.handle +      return +         new RemoveElementAtComputation           ( -            new InvalidTypeException -            ( -               collection.get_origin(), -               collection.get_type(), -               Type.COLLECTION_TYPES -            ) +            RemoveElementAt.build(origin, index, collection)           ); -      } - -      if (index.get_type().can_be_used_as(Type.INT)) -      { -         return new RemoveElementAt(origin, index, collection); -      } - -      hint = -         (Type) index.get_type().generate_comparable_to(Type.INT); - -      if (hint.equals(Type.ANY)) -      { -         ErrorManager.handle -         ( -            new IncomparableTypeException -            ( -               index.get_origin(), -               index.get_type(), -               Type.INT -            ) -         ); -      } - -      return new RemoveElementAt(origin, index, collection);     }     /**** Accessors ************************************************************/     @Override -   public void get_visited_by (final InstructionVisitor iv) +   public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      iv.visit_remove_element_at(this); -   } - -   public Computation get_index () -   { -      return index; +      cv.visit_remove_element_at(this);     } -   public Reference get_collection () +   public RemoveElementAt get_instruction ()     { -      return collection; +      return instruction;     }     /**** Misc. ****************************************************************/ @@ -119,20 +73,8 @@ public class RemoveElementAt extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append(origin.toString()); -      sb.append("(RemoveElementAt"); -      sb.append(System.lineSeparator()); -      sb.append(System.lineSeparator()); - -      sb.append("index:"); -      sb.append(System.lineSeparator()); -      sb.append(index.toString()); -      sb.append(System.lineSeparator()); -      sb.append(System.lineSeparator()); - -      sb.append("collection:"); -      sb.append(System.lineSeparator()); -      sb.append(collection.toString()); +      sb.append("(ComputationOf "); +      sb.append(instruction.toString());        sb.append(")"); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementComputation.java index d721614..e3acd4b 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementComputation.java @@ -1,6 +1,4 @@ -package tonkadur.fate.v1.lang.instruction; - -import tonkadur.error.ErrorManager; +package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin; @@ -8,134 +6,65 @@ import tonkadur.fate.v1.error.ConflictingTypeException;  import tonkadur.fate.v1.error.IncomparableTypeException;  import tonkadur.fate.v1.error.InvalidTypeException; -import tonkadur.fate.v1.lang.type.CollectionType; -import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.instruction.RemoveElement; -import tonkadur.fate.v1.lang.meta.InstructionVisitor; -import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; +import tonkadur.fate.v1.lang.meta.Reference; -public class RemoveElement extends Instruction +public class RemoveElementComputation extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final Computation element; -   protected final Computation collection; +   protected final RemoveElement instruction;     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected RemoveElement +   protected RemoveElementComputation     ( -      final Origin origin, -      final Computation element, -      final Computation collection +      final RemoveElement instruction     )     { -      super(origin); +      super(instruction.get_origin(), instruction.get_collection().get_type()); -      this.collection = collection; -      this.element = element; +      this.instruction = instruction;     } -     /***************************************************************************/     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static RemoveElement build +   public static RemoveElementComputation build     (        final Origin origin,        final Computation element, -      final Computation collection +      final Reference collection     )     throws        InvalidTypeException,        ConflictingTypeException,        IncomparableTypeException     { -      final Type hint; -      final Type collection_type; -      final CollectionType collection_true_type; -      final Type collection_element_type; - -      collection_type = collection.get_type(); - -      if (!(collection_type instanceof CollectionType)) -      { -         ErrorManager.handle -         ( -            new InvalidTypeException -            ( -               collection.get_origin(), -               collection.get_type(), -               Type.COLLECTION_TYPES -            ) -         ); -      } - -      collection_true_type = (CollectionType) collection_type; -      collection_element_type = collection_true_type.get_content_type(); - -      if -      ( -         element.get_type().can_be_used_as(collection_element_type) -         || -         (element.get_type().try_merging_with(collection_element_type) != null) -      ) -      { -         return new RemoveElement(origin, element, collection); -      } - -      ErrorManager.handle -      ( -         new ConflictingTypeException +      return +         new RemoveElementComputation           ( -            element.get_origin(), -            element.get_type(), -            collection_element_type -         ) -      ); - -      hint = -         (Type) element.get_type().generate_comparable_to -         ( -            collection_element_type -         ); - -      if (hint.equals(Type.ANY)) -      { -         ErrorManager.handle -         ( -            new IncomparableTypeException -            ( -               element.get_origin(), -               element.get_type(), -               collection_element_type -            ) +            RemoveElement.build(origin, element, collection)           ); -      } - -      return new RemoveElement(origin, element, collection);     }     /**** Accessors ************************************************************/     @Override -   public void get_visited_by (final InstructionVisitor iv) +   public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      iv.visit_remove_element(this); +      cv.visit_remove_element(this);     } -   public Computation get_element () +   public RemoveElement get_instruction ()     { -      return element; -   } - -   public Computation get_collection () -   { -      return collection; +      return instruction;     }     /**** Misc. ****************************************************************/ @@ -144,20 +73,8 @@ public class RemoveElement extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append(origin.toString()); -      sb.append("(RemoveElement"); -      sb.append(System.lineSeparator()); -      sb.append(System.lineSeparator()); - -      sb.append("element:"); -      sb.append(System.lineSeparator()); -      sb.append(element.toString()); -      sb.append(System.lineSeparator()); -      sb.append(System.lineSeparator()); - -      sb.append("collection:"); -      sb.append(System.lineSeparator()); -      sb.append(collection.toString()); +      sb.append("(ComputationOf "); +      sb.append(instruction.toString());        sb.append(")"); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java index 59a68e6..e5b6958 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java @@ -1,88 +1,60 @@ -package tonkadur.fate.v1.lang.instruction; - -import java.util.Collections; - -import tonkadur.error.ErrorManager; +package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin;  import tonkadur.fate.v1.error.InvalidTypeException; -import tonkadur.fate.v1.lang.type.CollectionType; -import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.instruction.ReverseList; -import tonkadur.fate.v1.lang.meta.InstructionVisitor; -import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; -public class ReverseList extends Instruction +public class ReverseListComputation extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final Computation collection; +   protected final ReverseList instruction;     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected ReverseList +   protected ReverseListComputation     ( -      final Origin origin, -      final Computation collection +      final ReverseList instruction     )     { -      super(origin); +      super(instruction.get_origin(), instruction.get_collection().get_type()); -      this.collection = collection; +      this.instruction = instruction;     }     /***************************************************************************/     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static ReverseList build +   public static ReverseListComputation build     (        final Origin origin,        final Computation collection     )     throws InvalidTypeException     { -      final Type t; - -      t = collection.get_type(); - -      if -      ( -         !(t instanceof CollectionType) -         || ((CollectionType) t).is_set() -      ) -      { -         ErrorManager.handle -         ( -            new InvalidTypeException -            ( -               collection.get_origin(), -               collection.get_type(), -               Collections.singleton(Type.LIST) -            ) -         ); -      } - -      return new ReverseList(origin, collection); +      return new ReverseListComputation(Shuffe.build(origin, collection));     }     /**** Accessors ************************************************************/     @Override -   public void get_visited_by (final InstructionVisitor iv) +   public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      iv.visit_reverse_list(this); +      cv.visit_reverse_list(this);     } -   public Computation get_collection () +   public ReverseList get_instruction ()     { -      return collection; +      return instruction;     }     /**** Misc. ****************************************************************/ @@ -91,8 +63,8 @@ public class ReverseList extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append("(ReverseList "); -      sb.append(collection.toString()); +      sb.append("(ComputationOf "); +      sb.append(instruction.toString());        sb.append(")"); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java index ebac30e..d40bdc0 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java @@ -1,40 +1,33 @@ -package tonkadur.fate.v1.lang.instruction; - -import java.util.Collections; - -import tonkadur.error.ErrorManager; +package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin;  import tonkadur.fate.v1.error.InvalidTypeException; -import tonkadur.fate.v1.lang.type.CollectionType; -import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.instruction.Shuffle; -import tonkadur.fate.v1.lang.meta.InstructionVisitor; -import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; -public class Shuffle extends Instruction +public class ShuffleComputation extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final Computation collection; +   protected final Shuffle instruction;     /***************************************************************************/     /**** PROTECTED ************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   protected Shuffle +   protected ShuffleComputation     ( -      final Origin origin, -      final Computation collection +      final Shuffle instruction     )     { -      super(origin); +      super(instruction.get_origin(), instruction.get_collection().get_type()); -      this.collection = collection; +      this.instruction = instruction;     }     /***************************************************************************/ @@ -48,41 +41,20 @@ public class Shuffle extends Instruction     )     throws InvalidTypeException     { -      final Type t; - -      t = collection.get_type(); - -      if -      ( -         !(t instanceof CollectionType) -         || ((CollectionType) t).is_set() -      ) -      { -         ErrorManager.handle -         ( -            new InvalidTypeException -            ( -               collection.get_origin(), -               collection.get_type(), -               Collections.singleton(Type.LIST) -            ) -         ); -      } - -      return new Shuffle(origin, collection); +      return new ShuffleComputation(Shuffe.build(origin, collection));     }     /**** Accessors ************************************************************/     @Override -   public void get_visited_by (final InstructionVisitor iv) +   public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      iv.visit_shuffle(this); +      cv.visit_shuffle(this);     } -   public Computation get_collection () +   public Shuffle get_instruction ()     { -      return collection; +      return instruction;     }     /**** Misc. ****************************************************************/ @@ -91,8 +63,8 @@ public class Shuffle extends Instruction     {        final StringBuilder sb = new StringBuilder(); -      sb.append("(Shuffle "); -      sb.append(collection.toString()); +      sb.append("(ComputationOf "); +      sb.append(instruction.toString());        sb.append(")"); 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 01ff4a4..9a18682 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/InstructionVisitor.java @@ -50,9 +50,6 @@ public interface InstructionVisitor     public void visit_map (final Map c)     throws Throwable; -   public void visit_range (final Range c) -   throws Throwable; -     public void visit_shuffle (final Shuffle c)     throws Throwable; diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 index a94736d..1e0c245 100644 --- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 +++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 @@ -585,8 +585,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($ADD_KW.getLine()), -               ($ADD_KW.getCharPositionInLine()) +               ($IMP_ADD_KW.getLine()), +               ($IMP_ADD_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -600,8 +600,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($ADD_AT_KW.getLine()), -               ($ADD_AT_KW.getCharPositionInLine()) +               ($IMP_ADD_AT_KW.getLine()), +               ($IMP_ADD_AT_KW.getCharPositionInLine())              ),              ($index.result),              ($element.result), @@ -619,8 +619,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($ADD_ALL_KW.getLine()), -               ($ADD_ALL_KW.getCharPositionInLine()) +               ($IMP_ADD_ALL_KW.getLine()), +               ($IMP_ADD_ALL_KW.getCharPositionInLine())              ),              ($source.result),              ($target.result) @@ -669,8 +669,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($REMOVE_ONE_KW.getLine()), -               ($REMOVE_ONE_KW.getCharPositionInLine()) +               ($IMP_REMOVE_ONE_KW.getLine()), +               ($IMP_REMOVE_ONE_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -687,8 +687,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($REMOVE_AT_KW.getLine()), -               ($REMOVE_AT_KW.getCharPositionInLine()) +               ($IMP_REMOVE_AT_KW.getLine()), +               ($IMP_REMOVE_AT_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -705,8 +705,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($REMOVE_ALL_KW.getLine()), -               ($REMOVE_ALL_KW.getCharPositionInLine()) +               ($IMP_REMOVE_ALL_KW.getLine()), +               ($IMP_REMOVE_ALL_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -734,8 +734,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($REVERSE_KW.getLine()), -               ($REVERSE_KW.getCharPositionInLine()) +               ($IMP_REVERSE_KW.getLine()), +               ($IMP_REVERSE_KW.getCharPositionInLine())              ),              ($value_reference.result)           ); @@ -752,8 +752,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($MAP_KW.getLine()), -               ($MAP_KW.getCharPositionInLine()) +               ($IMP_MAP_KW.getLine()), +               ($IMP_MAP_KW.getCharPositionInLine())              ),              ($value.result),              ($inr.result), @@ -772,8 +772,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($INDEXED_MAP_KW.getLine()), -               ($INDEXED_MAP_KW.getCharPositionInLine()) +               ($IMP_INDEXED_MAP_KW.getLine()), +               ($IMP_INDEXED_MAP_KW.getCharPositionInLine())              ),              ($value.result),              ($inr.result), @@ -795,8 +795,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($MERGE_KW.getLine()), -               ($MERGE_KW.getCharPositionInLine()) +               ($IMP_MERGE_KW.getLine()), +               ($IMP_MERGE_KW.getCharPositionInLine())              ),              ($fun.result),              ($init.result), @@ -821,8 +821,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($MERGE_KW.getLine()), -               ($MERGE_KW.getCharPositionInLine()) +               ($IMP_MERGE_KW.getLine()), +               ($IMP_MERGE_KW.getCharPositionInLine())              ),              ($fun.result),              ($init.result), @@ -846,8 +846,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($SUB_LIST_KW.getLine()), -               ($SUB_LIST_KW.getCharPositionInLine()) +               ($IMP_SUB_LIST_KW.getLine()), +               ($IMP_SUB_LIST_KW.getCharPositionInLine())              ),              ($vstart.result),              ($vend.result), @@ -863,8 +863,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($FILTER_KW.getLine()), -               ($FILTER_KW.getCharPositionInLine()) +               ($IMP_FILTER_KW.getLine()), +               ($IMP_FILTER_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -882,8 +882,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($PARTITION_KW.getLine()), -               ($PARTITION_KW.getCharPositionInLine()) +               ($IMP_PARTITION_KW.getLine()), +               ($IMP_PARTITION_KW.getCharPositionInLine())              ),              ($value.result),              ($iftrue.result), @@ -898,8 +898,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($SORT_KW.getLine()), -               ($SORT_KW.getCharPositionInLine()) +               ($IMP_SORT_KW.getLine()), +               ($IMP_SORT_KW.getCharPositionInLine())              ),              ($value.result),              ($value_reference.result) @@ -914,8 +914,8 @@ returns [Instruction result]           (              CONTEXT.get_origin_at              ( -               ($SHUFFLE_KW.getLine()), -               ($SHUFFLE_KW.getCharPositionInLine()) +               ($IMP_SHUFFLE_KW.getLine()), +               ($IMP_SHUFFLE_KW.getCharPositionInLine())              ),              ($value_reference.result)           ); @@ -952,14 +952,15 @@ returns [Instruction result]     | IMP_SET_FIELDS_KW value_reference WS* field_value_list WS* R_PAREN     { +      /* FIXME: this should be a true Fate construct. */        final Origin origin;        final List<Instruction> operations;        origin =           CONTEXT.get_origin_at           ( -            ($SET_FIELDS_KW.getLine()), -            ($SET_FIELDS_KW.getCharPositionInLine()) +            ($IMP_SET_FIELDS_KW.getLine()), +            ($IMP_SET_FIELDS_KW.getCharPositionInLine())           );        operations = new ArrayList<Instruction>(); @@ -3269,8 +3270,8 @@ returns [Computation result]     }     | ADD_ALL_KW -         source=value_reference WS+ -         target=value_reference WS* +         sourcer=value_reference WS+ +         targetr=value_reference WS*        R_PAREN     {        $result = @@ -3281,8 +3282,8 @@ returns [Computation result]                 ($ADD_ALL_KW.getLine()),                 ($ADD_ALL_KW.getCharPositionInLine())              ), -            ($source.result), -            ($target.result) +            ($sourcer.result), +            ($targetr.result)           );     } | 


