summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-08-22 22:55:13 +0800
committerGravatar Uko Kokņevičs2024-08-22 22:55:13 +0800
commit5f4b45ec7634f2728693e93f862419e495db6979 (patch)
tree300f9acaddcfa4a63365bec4952dcb585be0a282
parentGet rid of that Scope mess (diff)
downloadorang-5f4b45ec7634f2728693e93f862419e495db6979.tar.gz
orang-5f4b45ec7634f2728693e93f862419e495db6979.tar.xz
orang-5f4b45ec7634f2728693e93f862419e495db6979.zip
Move Evaluator to a new module
-rw-r--r--evaluator/build.gradle.kts9
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Array.java (renamed from orang/src/main/java/lv/enes/orang/value/Array.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/BuiltinFunction.java (renamed from orang/src/main/java/lv/enes/orang/value/BuiltinFunction.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Evaluator.java (renamed from orang/src/main/java/lv/enes/orang/Evaluator.java)7
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Function.java (renamed from orang/src/main/java/lv/enes/orang/value/Function.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Nothing.java (renamed from orang/src/main/java/lv/enes/orang/value/Nothing.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/OrangBoolean.java (renamed from orang/src/main/java/lv/enes/orang/value/OrangBoolean.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/OrangInteger.java (renamed from orang/src/main/java/lv/enes/orang/value/OrangInteger.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/OrangString.java (renamed from orang/src/main/java/lv/enes/orang/value/OrangString.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/PartialBuiltinFunction.java (renamed from orang/src/main/java/lv/enes/orang/value/PartialBuiltinFunction.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/PartialFunction.java (renamed from orang/src/main/java/lv/enes/orang/value/PartialFunction.java)3
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Undefined.java (renamed from orang/src/main/java/lv/enes/orang/value/Undefined.java)2
-rw-r--r--evaluator/src/main/java/lv/enes/orang/evaluator/Value.java (renamed from orang/src/main/java/lv/enes/orang/value/Value.java)2
-rw-r--r--evaluator/src/main/java/module-info.java9
-rw-r--r--orang/build.gradle.kts1
-rw-r--r--orang/src/main/java/lv/enes/orang/Builtins.java2
-rw-r--r--orang/src/main/java/lv/enes/orang/Main.java3
-rw-r--r--orang/src/main/java/module-info.java2
-rw-r--r--settings.gradle.kts2
19 files changed, 36 insertions, 22 deletions
diff --git a/evaluator/build.gradle.kts b/evaluator/build.gradle.kts
new file mode 100644
index 0000000..9172259
--- /dev/null
+++ b/evaluator/build.gradle.kts
@@ -0,0 +1,9 @@
1plugins {
2 id("orang.java-conventions")
3}
4
5dependencies {
6 implementation(project(":ast"))
7 implementation(project(":core"))
8 implementation(project(":utils"))
9} \ No newline at end of file
diff --git a/orang/src/main/java/lv/enes/orang/value/Array.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Array.java
index 33e1516..4c76eff 100644
--- a/orang/src/main/java/lv/enes/orang/value/Array.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Array.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/BuiltinFunction.java b/evaluator/src/main/java/lv/enes/orang/evaluator/BuiltinFunction.java
index 1a61cfb..1f37280 100644
--- a/orang/src/main/java/lv/enes/orang/value/BuiltinFunction.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/BuiltinFunction.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/Evaluator.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Evaluator.java
index 69a256f..6925bac 100644
--- a/orang/src/main/java/lv/enes/orang/Evaluator.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Evaluator.java
@@ -1,8 +1,7 @@
1package lv.enes.orang; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.ast.*; 3import lv.enes.orang.ast.*;
4import lv.enes.orang.core.OrangRuntimeException; 4import lv.enes.orang.core.OrangRuntimeException;
5import lv.enes.orang.value.*;
6 5
7import java.util.ArrayList; 6import java.util.ArrayList;
8import java.util.Collections; 7import java.util.Collections;
@@ -10,10 +9,6 @@ import java.util.HashMap;
10import java.util.Map; 9import java.util.Map;
11 10
12public record Evaluator(Map<String, Value> scope, Value lastResult) implements ExpressionVisitor<Value, OrangRuntimeException>, StatementVisitor<Evaluator, OrangRuntimeException> { 11public record Evaluator(Map<String, Value> scope, Value lastResult) implements ExpressionVisitor<Value, OrangRuntimeException>, StatementVisitor<Evaluator, OrangRuntimeException> {
13 public Evaluator() {
14 this(new HashMap<>(Builtins.BUILTINS));
15 }
16
17 public Evaluator(Map<String, Value> scope) { 12 public Evaluator(Map<String, Value> scope) {
18 this(scope, Undefined.INSTANCE); 13 this(scope, Undefined.INSTANCE);
19 } 14 }
diff --git a/orang/src/main/java/lv/enes/orang/value/Function.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Function.java
index f8c1a7f..33102fb 100644
--- a/orang/src/main/java/lv/enes/orang/value/Function.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Function.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.ast.ArgSpec; 3import lv.enes.orang.ast.ArgSpec;
4import lv.enes.orang.ast.Expression; 4import lv.enes.orang.ast.Expression;
diff --git a/orang/src/main/java/lv/enes/orang/value/Nothing.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Nothing.java
index 4a90010..c971649 100644
--- a/orang/src/main/java/lv/enes/orang/value/Nothing.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Nothing.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lombok.EqualsAndHashCode; 3import lombok.EqualsAndHashCode;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/OrangBoolean.java b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangBoolean.java
index 59aa9b7..3564a9c 100644
--- a/orang/src/main/java/lv/enes/orang/value/OrangBoolean.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangBoolean.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lombok.EqualsAndHashCode; 3import lombok.EqualsAndHashCode;
4import lv.enes.orang.core.OrangRuntimeException; 4import lv.enes.orang.core.OrangRuntimeException;
diff --git a/orang/src/main/java/lv/enes/orang/value/OrangInteger.java b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangInteger.java
index 63a44da..90de0b5 100644
--- a/orang/src/main/java/lv/enes/orang/value/OrangInteger.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangInteger.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/OrangString.java b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangString.java
index b4ede1f..5c38842 100644
--- a/orang/src/main/java/lv/enes/orang/value/OrangString.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/OrangString.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/PartialBuiltinFunction.java b/evaluator/src/main/java/lv/enes/orang/evaluator/PartialBuiltinFunction.java
index c1be22a..f1e8cc6 100644
--- a/orang/src/main/java/lv/enes/orang/value/PartialBuiltinFunction.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/PartialBuiltinFunction.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/PartialFunction.java b/evaluator/src/main/java/lv/enes/orang/evaluator/PartialFunction.java
index 427da76..d0125f6 100644
--- a/orang/src/main/java/lv/enes/orang/value/PartialFunction.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/PartialFunction.java
@@ -1,6 +1,5 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.*;
4import lv.enes.orang.ast.ArgSpec; 3import lv.enes.orang.ast.ArgSpec;
5import lv.enes.orang.ast.Expression; 4import lv.enes.orang.ast.Expression;
6import lv.enes.orang.core.OrangRuntimeException; 5import lv.enes.orang.core.OrangRuntimeException;
diff --git a/orang/src/main/java/lv/enes/orang/value/Undefined.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Undefined.java
index a341ee8..2aec74b 100644
--- a/orang/src/main/java/lv/enes/orang/value/Undefined.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Undefined.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lombok.EqualsAndHashCode; 3import lombok.EqualsAndHashCode;
4 4
diff --git a/orang/src/main/java/lv/enes/orang/value/Value.java b/evaluator/src/main/java/lv/enes/orang/evaluator/Value.java
index 07e6848..d8c8b9c 100644
--- a/orang/src/main/java/lv/enes/orang/value/Value.java
+++ b/evaluator/src/main/java/lv/enes/orang/evaluator/Value.java
@@ -1,4 +1,4 @@
1package lv.enes.orang.value; 1package lv.enes.orang.evaluator;
2 2
3import lv.enes.orang.core.OrangRuntimeException; 3import lv.enes.orang.core.OrangRuntimeException;
4 4
diff --git a/evaluator/src/main/java/module-info.java b/evaluator/src/main/java/module-info.java
new file mode 100644
index 0000000..4cb992c
--- /dev/null
+++ b/evaluator/src/main/java/module-info.java
@@ -0,0 +1,9 @@
1module lv.enes.orang.evaluator {
2 exports lv.enes.orang.evaluator;
3
4 requires lv.enes.orang.ast;
5 requires lv.enes.orang.core;
6 requires lv.enes.orang.utils;
7
8 requires static lombok;
9} \ No newline at end of file
diff --git a/orang/build.gradle.kts b/orang/build.gradle.kts
index 4be19a4..8c9de5f 100644
--- a/orang/build.gradle.kts
+++ b/orang/build.gradle.kts
@@ -14,6 +14,7 @@ dependencies {
14 implementation(project(":ast")) 14 implementation(project(":ast"))
15 implementation(project(":checker")) 15 implementation(project(":checker"))
16 implementation(project(":core")) 16 implementation(project(":core"))
17 implementation(project(":evaluator"))
17 implementation(project(":parser")) 18 implementation(project(":parser"))
18 implementation(project(":utils")) 19 implementation(project(":utils"))
19} 20}
diff --git a/orang/src/main/java/lv/enes/orang/Builtins.java b/orang/src/main/java/lv/enes/orang/Builtins.java
index a83f4c5..eea8ef4 100644
--- a/orang/src/main/java/lv/enes/orang/Builtins.java
+++ b/orang/src/main/java/lv/enes/orang/Builtins.java
@@ -2,7 +2,7 @@ package lv.enes.orang;
2 2
3import lombok.extern.slf4j.Slf4j; 3import lombok.extern.slf4j.Slf4j;
4import lv.enes.orang.core.OrangRuntimeException; 4import lv.enes.orang.core.OrangRuntimeException;
5import lv.enes.orang.value.*; 5import lv.enes.orang.evaluator.*;
6 6
7import java.io.IOException; 7import java.io.IOException;
8import java.util.List; 8import java.util.List;
diff --git a/orang/src/main/java/lv/enes/orang/Main.java b/orang/src/main/java/lv/enes/orang/Main.java
index 9a061fe..5730fd1 100644
--- a/orang/src/main/java/lv/enes/orang/Main.java
+++ b/orang/src/main/java/lv/enes/orang/Main.java
@@ -2,6 +2,7 @@ package lv.enes.orang;
2 2
3import lv.enes.orang.checker.Checker; 3import lv.enes.orang.checker.Checker;
4import lv.enes.orang.core.OrangException; 4import lv.enes.orang.core.OrangException;
5import lv.enes.orang.evaluator.Evaluator;
5import lv.enes.orang.parser.Parser; 6import lv.enes.orang.parser.Parser;
6 7
7import java.io.FileReader; 8import java.io.FileReader;
@@ -19,7 +20,7 @@ public class Main {
19 20
20 private static void repl() throws IOException { 21 private static void repl() throws IOException {
21 var checker = Checker.of(Builtins.BUILTINS); 22 var checker = Checker.of(Builtins.BUILTINS);
22 var evaluator = new Evaluator(); 23 var evaluator = new Evaluator(Builtins.BUILTINS);
23 24
24 try (var stream = Main.class.getResourceAsStream("prelude.orang")) { 25 try (var stream = Main.class.getResourceAsStream("prelude.orang")) {
25 var prog = Parser.parseProgram(stream); 26 var prog = Parser.parseProgram(stream);
diff --git a/orang/src/main/java/module-info.java b/orang/src/main/java/module-info.java
index 5b7b601..cb61de3 100644
--- a/orang/src/main/java/module-info.java
+++ b/orang/src/main/java/module-info.java
@@ -1,10 +1,10 @@
1module lv.enes.orang { 1module lv.enes.orang {
2 exports lv.enes.orang; 2 exports lv.enes.orang;
3 exports lv.enes.orang.value;
4 3
5 requires lv.enes.orang.ast; 4 requires lv.enes.orang.ast;
6 requires lv.enes.orang.checker; 5 requires lv.enes.orang.checker;
7 requires lv.enes.orang.core; 6 requires lv.enes.orang.core;
7 requires lv.enes.orang.evaluator;
8 requires lv.enes.orang.parser; 8 requires lv.enes.orang.parser;
9 requires lv.enes.orang.utils; 9 requires lv.enes.orang.utils;
10 10
diff --git a/settings.gradle.kts b/settings.gradle.kts
index a64dfa6..bd27876 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,3 @@
1rootProject.name = "orang" 1rootProject.name = "orang"
2 2
3include("ast", "checker", "core", "lexer", "orang", "parser", "utils") \ No newline at end of file 3include("ast", "checker", "core", "evaluator", "lexer", "orang", "parser", "utils") \ No newline at end of file