aboutsummaryrefslogtreecommitdiffstats
path: root/main/core/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'main/core/runtime')
-rw-r--r--main/core/runtime/Function.java9
-rw-r--r--main/core/runtime/Interpreter.java3
-rw-r--r--main/core/runtime/Scope.java3
-rw-r--r--main/core/runtime/State.java7
4 files changed, 13 insertions, 9 deletions
diff --git a/main/core/runtime/Function.java b/main/core/runtime/Function.java
index cf6422f..cc4f56f 100644
--- a/main/core/runtime/Function.java
+++ b/main/core/runtime/Function.java
@@ -1,7 +1,8 @@
package com.jantuomi.interpreter.main.core.runtime;
-import com.jantuomi.interpreter.main.core.parser.ast.FunctionBodyNode;
+import com.jantuomi.interpreter.main.core.parser.ast.BlockBodyNode;
import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
import java.util.List;
@@ -12,14 +13,14 @@ public class Function {
private List<String> argumentNames;
- private FunctionBodyNode body;
+ private BlockBodyNode body;
- public Function(List<String> argumentNames, FunctionBodyNode body) {
+ public Function(List<String> argumentNames, BlockBodyNode body) {
this.argumentNames = argumentNames;
this.body = body;
}
- public DataContainer evaluate(List<DataContainer> params) {
+ public DataContainer evaluate(List<DataContainer> params) throws InterpreterException {
State.getInstance().createScope();
if (params.size() != argumentNames.size()) {
diff --git a/main/core/runtime/Interpreter.java b/main/core/runtime/Interpreter.java
index f84e7e7..6877ac3 100644
--- a/main/core/runtime/Interpreter.java
+++ b/main/core/runtime/Interpreter.java
@@ -2,6 +2,7 @@ package com.jantuomi.interpreter.main.core.runtime;
import com.jantuomi.interpreter.main.core.parser.ast.ASTNode;
import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
import java.util.List;
@@ -18,7 +19,7 @@ public class Interpreter {
private Interpreter() {
}
- public static String execute(List<ASTNode> sequence) {
+ public static String execute(List<ASTNode> sequence) throws InterpreterException {
String output = "";
for (ASTNode node : sequence) {
DataContainer data = node.evaluate();
diff --git a/main/core/runtime/Scope.java b/main/core/runtime/Scope.java
index a45cdd7..e3bf899 100644
--- a/main/core/runtime/Scope.java
+++ b/main/core/runtime/Scope.java
@@ -1,6 +1,7 @@
package com.jantuomi.interpreter.main.core.runtime;
import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
import java.util.HashMap;
import java.util.List;
@@ -23,7 +24,7 @@ public class Scope {
variables.replace(symbol, value);
}
- public DataContainer resolveSymbol(String symbol, List<DataContainer> params) {
+ public DataContainer resolveSymbol(String symbol, List<DataContainer> params) throws InterpreterException {
if (functions.containsKey(symbol)) {
return functions.get(symbol).evaluate(params);
}
diff --git a/main/core/runtime/State.java b/main/core/runtime/State.java
index 72a268b..d825a3a 100644
--- a/main/core/runtime/State.java
+++ b/main/core/runtime/State.java
@@ -1,6 +1,7 @@
package com.jantuomi.interpreter.main.core.runtime;
import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
import java.util.Arrays;
import java.util.List;
@@ -23,16 +24,16 @@ public class State {
scopes.push(new Scope());
}
- private DataContainer resolveSymbol(String symbol) {
+ private DataContainer resolveSymbol(String symbol) throws InterpreterException {
return scopes.peek().resolveSymbol(symbol, Arrays.asList());
}
- public DataContainer getSymbolValue(String symbol) {
+ public DataContainer getSymbolValue(String symbol) throws InterpreterException {
DataContainer d = resolveSymbol(symbol);
return d;
}
- public DataContainer getSymbolValue(String symbol, List<DataContainer> parameters) {
+ public DataContainer getSymbolValue(String symbol, List<DataContainer> parameters) throws InterpreterException {
return scopes.peek().resolveSymbol(symbol, parameters);
}