| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-06-29 21:04:37 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2021-06-29 21:04:37 +0200 |
| commit | 4ebf541afc7aeb44ff509450e9ccec8f1d03cf3b (patch) | |
| tree | 7c3ecd6cc9731c037b7e8630909f5781affc492a | |
| parent | 30dcc608374485d1d25b93a700af3f8b276eafb1 (diff) | |
...
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 () |


