diff options
| -rw-r--r-- | evaluator/build.gradle.kts | 9 | ||||
| -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.java | 9 | ||||
| -rw-r--r-- | orang/build.gradle.kts | 1 | ||||
| -rw-r--r-- | orang/src/main/java/lv/enes/orang/Builtins.java | 2 | ||||
| -rw-r--r-- | orang/src/main/java/lv/enes/orang/Main.java | 3 | ||||
| -rw-r--r-- | orang/src/main/java/module-info.java | 2 | ||||
| -rw-r--r-- | settings.gradle.kts | 2 |
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 @@ | |||
| 1 | plugins { | ||
| 2 | id("orang.java-conventions") | ||
| 3 | } | ||
| 4 | |||
| 5 | dependencies { | ||
| 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.ast.*; | 3 | import lv.enes.orang.ast.*; |
| 4 | import lv.enes.orang.core.OrangRuntimeException; | 4 | import lv.enes.orang.core.OrangRuntimeException; |
| 5 | import lv.enes.orang.value.*; | ||
| 6 | 5 | ||
| 7 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
| 8 | import java.util.Collections; | 7 | import java.util.Collections; |
| @@ -10,10 +9,6 @@ import java.util.HashMap; | |||
| 10 | import java.util.Map; | 9 | import java.util.Map; |
| 11 | 10 | ||
| 12 | public record Evaluator(Map<String, Value> scope, Value lastResult) implements ExpressionVisitor<Value, OrangRuntimeException>, StatementVisitor<Evaluator, OrangRuntimeException> { | 11 | public 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.ast.ArgSpec; | 3 | import lv.enes.orang.ast.ArgSpec; |
| 4 | import lv.enes.orang.ast.Expression; | 4 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lombok.EqualsAndHashCode; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lombok.EqualsAndHashCode; | 3 | import lombok.EqualsAndHashCode; |
| 4 | import lv.enes.orang.core.OrangRuntimeException; | 4 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.*; | ||
| 4 | import lv.enes.orang.ast.ArgSpec; | 3 | import lv.enes.orang.ast.ArgSpec; |
| 5 | import lv.enes.orang.ast.Expression; | 4 | import lv.enes.orang.ast.Expression; |
| 6 | import lv.enes.orang.core.OrangRuntimeException; | 5 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lombok.EqualsAndHashCode; | 3 | import 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 @@ | |||
| 1 | package lv.enes.orang.value; | 1 | package lv.enes.orang.evaluator; |
| 2 | 2 | ||
| 3 | import lv.enes.orang.core.OrangRuntimeException; | 3 | import 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 @@ | |||
| 1 | module 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 | ||
| 3 | import lombok.extern.slf4j.Slf4j; | 3 | import lombok.extern.slf4j.Slf4j; |
| 4 | import lv.enes.orang.core.OrangRuntimeException; | 4 | import lv.enes.orang.core.OrangRuntimeException; |
| 5 | import lv.enes.orang.value.*; | 5 | import lv.enes.orang.evaluator.*; |
| 6 | 6 | ||
| 7 | import java.io.IOException; | 7 | import java.io.IOException; |
| 8 | import java.util.List; | 8 | import 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 | ||
| 3 | import lv.enes.orang.checker.Checker; | 3 | import lv.enes.orang.checker.Checker; |
| 4 | import lv.enes.orang.core.OrangException; | 4 | import lv.enes.orang.core.OrangException; |
| 5 | import lv.enes.orang.evaluator.Evaluator; | ||
| 5 | import lv.enes.orang.parser.Parser; | 6 | import lv.enes.orang.parser.Parser; |
| 6 | 7 | ||
| 7 | import java.io.FileReader; | 8 | import 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 @@ | |||
| 1 | module lv.enes.orang { | 1 | module 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 @@ | |||
| 1 | rootProject.name = "orang" | 1 | rootProject.name = "orang" |
| 2 | 2 | ||
| 3 | include("ast", "checker", "core", "lexer", "orang", "parser", "utils") \ No newline at end of file | 3 | include("ast", "checker", "core", "evaluator", "lexer", "orang", "parser", "utils") \ No newline at end of file |