| summaryrefslogtreecommitdiff |
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2020-09-10 17:19:53 +0200 |
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2020-09-10 17:19:53 +0200 |
| commit | 54bff1ac3084bde69fd5a14feb0fedc496f91a85 (patch) | |
| tree | 45574c90873df61724c8a1e2227f7cf632e6be80 | |
| parent | 066fcb03884cfdb79b3ff3825064debeb9e73126 (diff) | |
...
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 ( |


