summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 13:54:30 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 13:54:30 +0200
commit6655cdcd1c28ac36c8af144573c396d96b9dceee (patch)
treef0eb3d8bb90e5e44fef0de319e5fd8824e72ad7a /src
parent8fd556f0065b7a634602cf4a8b666a426d4e8de6 (diff)
Updates example, allows lambdas w/o params.
Diffstat (limited to 'src')
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/World.java6
-rw-r--r--src/core/src/tonkadur/fate/v1/lang/meta/DeclarationCollection.java21
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateLexer.g42
-rw-r--r--src/core/src/tonkadur/fate/v1/parser/FateParser.g420
4 files changed, 46 insertions, 3 deletions
diff --git a/src/core/src/tonkadur/fate/v1/lang/World.java b/src/core/src/tonkadur/fate/v1/lang/World.java
index 4b19cce..98a6f06 100644
--- a/src/core/src/tonkadur/fate/v1/lang/World.java
+++ b/src/core/src/tonkadur/fate/v1/lang/World.java
@@ -259,6 +259,12 @@ public class World
sb.append(System.lineSeparator());
sb.append(System.lineSeparator());
+ sb.append("Sequences: ");
+ sb.append(System.lineSeparator());
+ sb.append(sequence_collection.toString());
+ sb.append(System.lineSeparator());
+ sb.append(System.lineSeparator());
+
sb.append(")");
return sb.toString();
diff --git a/src/core/src/tonkadur/fate/v1/lang/meta/DeclarationCollection.java b/src/core/src/tonkadur/fate/v1/lang/meta/DeclarationCollection.java
index 0250981..43d8209 100644
--- a/src/core/src/tonkadur/fate/v1/lang/meta/DeclarationCollection.java
+++ b/src/core/src/tonkadur/fate/v1/lang/meta/DeclarationCollection.java
@@ -91,7 +91,16 @@ public class DeclarationCollection <Declared extends DeclaredEntity>
final StringBuilder sb = new StringBuilder();
sb.append("Default Value: ");
- sb.append(value_on_missing.toString());
+
+ if (value_on_missing == null)
+ {
+ sb.append("null");
+ }
+ else
+ {
+ sb.append(value_on_missing.toString());
+ }
+
sb.append(System.lineSeparator());
for (final Map.Entry<String, Declared> entry: collection.entrySet())
@@ -99,7 +108,15 @@ public class DeclarationCollection <Declared extends DeclaredEntity>
sb.append("- ");
sb.append(entry.getKey());
sb.append(": ");
- sb.append(entry.getValue().toString());
+
+ if (entry.getValue() == null)
+ {
+ sb.append("null");
+ }
+ else
+ {
+ sb.append(entry.getValue().toString());
+ }
sb.append(System.lineSeparator());
}
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4 b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4
index 6fcb44b..294eac8 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateLexer.g4
@@ -32,7 +32,7 @@ DECLARE_EVENT_TYPE_KW: L_PAREN ('declare'|'define'|'def')US'event'(US'type')? SE
DECLARE_TEXT_EFFECT_KW: L_PAREN ('declare'|'define'|'def')US'text'US'effect' SEP+;
DECLARE_VARIABLE_KW: L_PAREN 'global' SEP+;
LOCAL_KW: L_PAREN 'local' SEP+;
-DEFINE_SEQUENCE_KW: L_PAREN ('declare'|'define'|'def')US'seq'('uence')? SEP+;
+DEFINE_SEQUENCE_KW: L_PAREN ('declare'|'define'|'def')US(('seq'('uence')?)|('proc'('edure'?))) SEP+;
DIVIDE_KW: L_PAREN ('divide'|'/'|'div') SEP+;
DO_WHILE_KW: L_PAREN ('do'US'while') SEP+;
ENABLE_TEXT_EFFECT_KW: L_PAREN 'text'US'effect' SEP+;
diff --git a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4 b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
index 14accd4..7bde449 100644
--- a/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
+++ b/src/core/src/tonkadur/fate/v1/parser/FateParser.g4
@@ -2446,6 +2446,26 @@ returns [Computation result]
}
}
+ | EVAL_KW value_reference WS* R_PAREN
+ {
+ final Origin origin;
+
+ origin =
+ CONTEXT.get_origin_at
+ (
+ ($EVAL_KW.getLine()),
+ ($EVAL_KW.getCharPositionInLine())
+ );
+
+ $result =
+ LambdaEvaluation.build
+ (
+ origin,
+ ($value_reference.result),
+ new ArrayList()
+ );
+ }
+
| EVAL_KW value_reference WS+ value_list WS* R_PAREN
{
final Origin origin;