summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-06-29 21:04:37 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2021-06-29 21:04:37 +0200
commit4ebf541afc7aeb44ff509450e9ccec8f1d03cf3b (patch)
tree7c3ecd6cc9731c037b7e8630909f5781affc492a /src
parent30dcc608374485d1d25b93a700af3f8b276eafb1 (diff)
...
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/Main.java17
-rw-r--r--src/core/src/tonkadur/TonkadurPlugin.java2
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/Cast.java5
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/CondValue.java23
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/computation/ValueToText.java8
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/Computation.java3
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/type/FutureType.java8
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 ()