diff options
Diffstat (limited to 'main/core/runtime')
| -rw-r--r-- | main/core/runtime/Function.java | 9 | ||||
| -rw-r--r-- | main/core/runtime/Interpreter.java | 3 | ||||
| -rw-r--r-- | main/core/runtime/Scope.java | 3 | ||||
| -rw-r--r-- | main/core/runtime/State.java | 7 |
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); } |
