| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
10 files changed, 231 insertions, 47 deletions
| diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/AddElementComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/AddElementComputation.java index e0ef551..82461d3 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/AddElementComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/AddElementComputation.java @@ -24,7 +24,7 @@ public class AddElementComputation extends Computation     /**** Constructors *********************************************************/     protected AddElementComputation     ( -      final AddElementAt instruction +      final AddElement instruction     )     {        super(instruction.get_origin(), instruction.get_collection().get_type()); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/AddElementsOfComputation.java b/src/core/src/tonkadur/fate/v1/lang/computation/AddElementsOfComputation.java index 5d87e0b..b6ecec4 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/AddElementsOfComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/AddElementsOfComputation.java @@ -28,7 +28,11 @@ public class AddElementsOfComputation extends Computation        final AddElementsOf instruction     )     { -      super(instruction.get_origin(), instruction.get_collection().get_type()); +      super +      ( +         instruction.get_origin(), +         instruction.get_source_collection().get_type() +      );        this.instruction = instruction;     } 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 d042dd0..c81926e 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/MapComputation.java @@ -58,7 +58,8 @@ public class MapComputation extends Computation           (              origin,              ((LambdaType) lambda_function.get_type()).get_return_type(), -            ((CollectionType) collection_in.get_type()).is_set() +            ((CollectionType) collection_in.get_type()).is_set(), +            "auto generated"           );        return new MapComputation(parent, type); diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Range.java b/src/core/src/tonkadur/fate/v1/lang/computation/Range.java index 2398bdf..257a722 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/Range.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/Range.java @@ -1,4 +1,4 @@ -package tonkadur.fate.v1.lang.instruction; +package tonkadur.fate.v1.lang.computation;  import java.util.Collections; @@ -11,16 +11,14 @@ import tonkadur.fate.v1.error.InvalidTypeException;  import tonkadur.fate.v1.lang.type.CollectionType;  import tonkadur.fate.v1.lang.type.Type; -import tonkadur.fate.v1.lang.meta.InstructionVisitor; -import tonkadur.fate.v1.lang.meta.Instruction; +import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; -public class Range extends Instruction +public class Range extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/     /***************************************************************************/ -   protected final Computation collection;     protected final Computation start;     protected final Computation end;     protected final Computation increment; @@ -35,12 +33,11 @@ public class Range extends Instruction        final Computation start,        final Computation end,        final Computation increment, -      final Computation collection +      final Type target_type     )     { -      super(origin); +      super(origin, target_type); -      this.collection = collection;        this.start = start;        this.end = end;        this.increment = increment; @@ -55,28 +52,10 @@ public class Range extends Instruction        final Origin origin,        final Computation start,        final Computation end, -      final Computation increment, -      final Computation collection +      final Computation increment     )     throws InvalidTypeException     { -      final Type t; - -      t = collection.get_type(); - -      if (!(t instanceof CollectionType)) -      { -         ErrorManager.handle -         ( -            new InvalidTypeException -            ( -               collection.get_origin(), -               collection.get_type(), -               Type.COLLECTION_TYPES -            ) -         ); -      } -        if (!start.get_type().can_be_used_as(Type.INT))        {           ErrorManager.handle @@ -116,20 +95,23 @@ public class Range extends Instruction           );        } -      return new Range(origin, start, end, increment, collection); +      return +         new Range +         ( +            origin, +            start, +            end, +            increment, +            CollectionType.build(origin, Type.INT, false, "auto generated") +         );     }     /**** Accessors ************************************************************/     @Override -   public void get_visited_by (final InstructionVisitor iv) +   public void get_visited_by (final ComputationVisitor cv)     throws Throwable     { -      iv.visit_range(this); -   } - -   public Computation get_collection () -   { -      return collection; +      cv.visit_range(this);     }     public Computation get_start () @@ -159,8 +141,6 @@ public class Range extends Instruction        sb.append(end.toString());        sb.append(" ");        sb.append(increment.toString()); -      sb.append(" "); -      sb.append(collection.toString());        sb.append(")");        return sb.toString(); 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 42e61b7..4a87a02 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/RemoveElementAtComputation.java @@ -12,7 +12,7 @@ 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 Computation +public class RemoveElementAtComputation extends Computation  {     /***************************************************************************/     /**** MEMBERS **************************************************************/ 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 e5b6958..022633a 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ReverseListComputation.java @@ -41,7 +41,11 @@ public class ReverseListComputation extends Computation     )     throws InvalidTypeException     { -      return new ReverseListComputation(Shuffe.build(origin, collection)); +      /* +       * FIXME: this computation should accept any collection type, and return a +       * list, which is not the case of ReverseList.build +       */ +      return new ReverseListComputation(ReverseList.build(origin, collection));     }     /**** Accessors ************************************************************/ 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 d40bdc0..b9b42a0 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ShuffleComputation.java @@ -34,14 +34,18 @@ public class ShuffleComputation extends Computation     /**** PUBLIC ***************************************************************/     /***************************************************************************/     /**** Constructors *********************************************************/ -   public static Shuffle build +   public static ShuffleComputation build     (        final Origin origin,        final Computation collection     )     throws InvalidTypeException     { -      return new ShuffleComputation(Shuffe.build(origin, collection)); +      /* +       * FIXME: this computation should accept any collection type, and return a +       * list, which is not the case of Shuffle.build +       */ +      return new ShuffleComputation(Shuffle.build(origin, collection));     }     /**** Accessors ************************************************************/ 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 1c2fa85..8988ff7 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/ComputationVisitor.java @@ -22,9 +22,6 @@ public interface ComputationVisitor     public void visit_fold (final Fold n)     throws Throwable; -   public void visit_car_cdr (final CarCdr n) -   throws Throwable; -     public void visit_cond_value (final CondValue n)     throws Throwable; @@ -85,4 +82,39 @@ public interface ComputationVisitor     public void visit_variable_reference (final VariableReference n)     throws Throwable; +   public void visit_car_cdr (final CarCdr n) +   throws Throwable; + +   public void visit_add_element (final AddElementComputation n) +   throws Throwable; + +   public void visit_add_element_at (final AddElementAtComputation n) +   throws Throwable; + +   public void visit_add_elements_of (final AddElementsOfComputation n) +   throws Throwable; + +   public void visit_map (final MapComputation n) +   throws Throwable; + +   public void visit_range (final Range n) +   throws Throwable; + +   public void visit_remove_all_of_element +   ( +      final RemoveAllOfElementComputation n +   ) +   throws Throwable; + +   public void visit_remove_element_at (final RemoveElementAtComputation n) +   throws Throwable; + +   public void visit_remove_element (final RemoveElementComputation n) +   throws Throwable; + +   public void visit_reverse_list (final ReverseListComputation n) +   throws Throwable; + +   public void visit_shuffle (final ShuffleComputation n) +   throws Throwable;  } 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 d031b66..5d961a4 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 @@ -1872,4 +1872,112 @@ implements tonkadur.fate.v1.lang.meta.ComputationVisitor        result_as_address = register.get_address();        result_as_computation = register.get_value();     } + +   @Override +   public void visit_car_cdr +   ( +      final tonkadur.fate.v1.lang.computation.CarCdr n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_cons +   ( +      final tonkadur.fate.v1.lang.computation.ConsComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_add_element_at +   ( +      final tonkadur.fate.v1.lang.computation.AddElementAtComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_add_elements_of +   ( +      final tonkadur.fate.v1.lang.computation.AddElementsOfComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_fold +   ( +      final tonkadur.fate.v1.lang.computation.Fold n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_map +   ( +      final tonkadur.fate.v1.lang.computation.MapComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_range +   ( +      final tonkadur.fate.v1.lang.computation.Range n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_remove_all_of_element +   ( +      final tonkadur.fate.v1.lang.computation.RemoveAllOfElementComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_remove_element_at +   ( +      final tonkadur.fate.v1.lang.computation.RemoveElementAtComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_remove_element +   ( +      final tonkadur.fate.v1.lang.computation.RemoveElementComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_reverse_list +   ( +      final tonkadur.fate.v1.lang.computation.ReverseListComputation n +   ) +   { +      /* TODO */ +   } + +   @Override +   public void visit_shuffle +   ( +      final tonkadur.fate.v1.lang.computation.ShuffleComputation n +   ) +   { +      /* TODO */ +   }  } 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 769f2c0..4b88a53 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 @@ -546,6 +546,57 @@ implements tonkadur.fate.v1.lang.meta.InstructionVisitor        address_compiler.release_registers(result);     } +   public void visit_shuffle +   ( +      final tonkadur.fate.v1.lang.instruction.Shuffle n +   ) +   throws Throwable +   { +      /* +       * Fate: (shuffle collection) +       * +       * Wyrd: <shuffle collection> +       */ +      final ComputationCompiler address_compiler; +      final Address collection_address; + +      address_compiler = new ComputationCompiler(compiler); + +      n.get_collection().get_visited_by(address_compiler); + +      if (address_compiler.has_init()) +      { +         result.add(address_compiler.get_init()); +      } + +      collection_address = address_compiler.get_address(); + +      /* +       * TODO +      result.add +      ( +         Shuffle.generate +         ( +            compiler.registers(), +            compiler.assembler(), +            new Size(collection_address), +            collection_address +         ) +      ); +      */ + +      address_compiler.release_registers(result); +   } + +   public void visit_map +   ( +      final tonkadur.fate.v1.lang.instruction.Map n +   ) +   throws Throwable +   { +      /* TODO */ +   } +     @Override     public void visit_switch_instruction     ( | 


