| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
7 files changed, 39 insertions, 27 deletions
| diff --git a/src/core/src/tonkadur/Main.java b/src/core/src/tonkadur/Main.java index abf59d0..a17cd41 100644 --- a/src/core/src/tonkadur/Main.java +++ b/src/core/src/tonkadur/Main.java @@ -4,9 +4,9 @@ import java.util.List;  import java.io.IOException; -import tonkadur.parser.Context; +import tonkadur.parser.Origin; -import tonkadur.fate.v1.Utils; +import tonkadur.fate.v1.parser.ParserData;  public class Main  { @@ -19,7 +19,7 @@ public class Main        final List<TonkadurPlugin> plugins;        final tonkadur.fate.v1.lang.World fate_world;        final tonkadur.wyrd.v1.lang.World wyrd_world; -      final Context context; +      final ParserData parser_data;        tonkadur.fate.v1.Base.initialize();        tonkadur.wyrd.v1.Base.initialize(); @@ -39,20 +39,19 @@ public class Main        }        fate_world = new tonkadur.fate.v1.lang.World(); -      context = Context.build(RuntimeParameters.get_input_file()); +      parser_data = new ParserData(fate_world);        for (final TonkadurPlugin tp: plugins)        { -         tp.pre_fate_parsing(fate_world, context); +         tp.pre_fate_parsing(fate_world, parser_data);        }        try        { -         Utils.add_file_content +         parser_data.add_file_content           ( -            context.get_current_file(), -            context, -            fate_world +            Origin.BASE_LANGUAGE, +            RuntimeParameters.get_input_file()           );           System.out.println("Parsing completed."); diff --git a/src/core/src/tonkadur/TonkadurPlugin.java b/src/core/src/tonkadur/TonkadurPlugin.java index 42b3b90..c86b293 100644 --- a/src/core/src/tonkadur/TonkadurPlugin.java +++ b/src/core/src/tonkadur/TonkadurPlugin.java @@ -96,7 +96,7 @@ public abstract class TonkadurPlugin     public void pre_fate_parsing     (        final tonkadur.fate.v1.lang.World fate_world, -      final Context context +      final tonkadur.fate.v1.parser.ParserData parser_data     )     throws Throwable     { diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java index a14bf27..755ff8f 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/Cast.java @@ -10,6 +10,7 @@ import java.util.Set;  import tonkadur.error.ErrorManager;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.error.IncompatibleTypeException;  import tonkadur.fate.v1.error.IncomparableTypeException; @@ -101,9 +102,7 @@ public class Cast extends Computation        final Computation value,        final boolean is_autogenerated     ) -   throws -      IncompatibleTypeException, -      IncomparableTypeException +   throws ParsingError     {        final Type hint; diff --git a/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java b/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java index cf4395d..b7683d2 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java @@ -1,6 +1,8 @@  package tonkadur.fate.v1.lang.computation; +import java.util.ArrayList;  import java.util.List; +import java.util.ArrayList;  import tonkadur.functional.Cons; @@ -8,6 +10,7 @@ import tonkadur.parser.Origin;  import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.type.Type; +import tonkadur.fate.v1.lang.type.FutureType;  import tonkadur.fate.v1.lang.meta.ComputationVisitor;  import tonkadur.fate.v1.lang.meta.Computation; @@ -55,16 +58,12 @@ public class CondValue extends Computation        {           if (entry.get_cdr().get_type().can_be_used_as(Type.STRING))           { -            expect_string = 1; -              hint = Type.STRING;              break;           }           else if (entry.get_cdr().get_type() != Type.ANY)           { -            expect_string = 0; -              hint = entry.get_cdr().get_type();              break; @@ -94,12 +93,18 @@ public class CondValue extends Computation     /**** Accessors ************************************************************/     @Override     public void expect_non_string () +   throws ParsingError     {        if (get_type() instanceof FutureType)        { +         final Computation a;           Type hint; -         hint = branches.get(0).get_cdr().expect_non_string(); +         a = branches.get(0).get_cdr(); + +         a.expect_non_string(); + +         hint = a.get_type();           for (final Cons<Computation, Computation> entry: branches)           { @@ -114,12 +119,18 @@ public class CondValue extends Computation     @Override     public void expect_string () +   throws ParsingError     {        if (get_type() instanceof FutureType)        { +         final Computation a;           Type hint; -         hint = branches.get(0).get_cdr().expect_string(); +         a = branches.get(0).get_cdr(); + +         a.expect_non_string(); + +         hint = a.get_type();           for (final Cons<Computation, Computation> entry: branches)           { 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 ad4f8a3..85b5044 100644 --- a/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java +++ b/src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java @@ -1,9 +1,7 @@  package tonkadur.fate.v1.lang.computation;  import tonkadur.parser.Origin; - -import tonkadur.fate.v1.error.IncompatibleTypeException; -import tonkadur.fate.v1.error.IncomparableTypeException; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.type.Type; @@ -33,9 +31,7 @@ public class ValueToText extends Computation     /***************************************************************************/     /**** Constructors *********************************************************/     public static ValueToText build (final Computation value) -   throws -      IncompatibleTypeException, -      IncomparableTypeException +   throws ParsingError     {        final Type value_base_type; diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java b/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java index 303dfd1..73b63b7 100644 --- a/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java +++ b/src/core/src/tonkadur/fate/v1/lang/meta/Computation.java @@ -1,6 +1,7 @@  package tonkadur.fate.v1.lang.meta;  import tonkadur.parser.Origin; +import tonkadur.parser.ParsingError;  import tonkadur.fate.v1.lang.type.Type; @@ -38,10 +39,12 @@ public abstract class Computation extends Node     }     public void expect_non_string () +   throws ParsingError     {     }     public void expect_string () +   throws ParsingError     {     } diff --git a/src/core/src/tonkadur/fate/v1/lang/type/FutureType.java b/src/core/src/tonkadur/fate/v1/lang/type/FutureType.java index 2eadd4f..5a24c16 100644 --- a/src/core/src/tonkadur/fate/v1/lang/type/FutureType.java +++ b/src/core/src/tonkadur/fate/v1/lang/type/FutureType.java @@ -1,7 +1,9 @@  package tonkadur.fate.v1.lang.type;  import java.util.ArrayList; +import java.util.List;  import java.util.Collection; +import java.util.Collections;  import tonkadur.error.ErrorManager; @@ -9,6 +11,8 @@ import tonkadur.parser.Context;  import tonkadur.parser.Location;  import tonkadur.parser.Origin; +import tonkadur.fate.v1.lang.meta.DeclaredEntity; +  public class FutureType extends Type  {     public static final Collection<FutureType> FUTURE_TYPES; @@ -44,7 +48,7 @@ public class FutureType extends Type     {        final Collection<FutureType> result; -      result = new ArraList<FutureType>(); +      result = new ArrayList<FutureType>();        for (final FutureType t: FUTURE_TYPES)        { @@ -164,7 +168,7 @@ public class FutureType extends Type     {        assert_is_resolved(); -      return resolved_type.generate_variant(parameters); +      return resolved_type.generate_variant(origin, parameters);     }     public Type get_resolved_type () | 


