diff options
Diffstat (limited to 'main/core/runtime')
| -rw-r--r-- | main/core/runtime/Function.java | 52 | ||||
| -rw-r--r-- | main/core/runtime/Interpreter.java | 35 | ||||
| -rw-r--r-- | main/core/runtime/Scope.java | 50 | ||||
| -rw-r--r-- | main/core/runtime/State.java | 74 | ||||
| -rw-r--r-- | main/core/runtime/builtins/AsIntBuiltinFunction.java | 52 | ||||
| -rw-r--r-- | main/core/runtime/builtins/BuiltinManager.java | 30 | ||||
| -rw-r--r-- | main/core/runtime/builtins/ConcatBuiltinFunction.java | 38 | ||||
| -rw-r--r-- | main/core/runtime/builtins/InBuiltinFunction.java | 38 | ||||
| -rw-r--r-- | main/core/runtime/builtins/OutBuiltinFunction.java | 32 |
9 files changed, 0 insertions, 401 deletions
diff --git a/main/core/runtime/Function.java b/main/core/runtime/Function.java deleted file mode 100644 index 6989a68..0000000 --- a/main/core/runtime/Function.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime; - -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; - -/** - * Created by jan on 20.6.2016. - */ -public class Function { - - private List<String> argumentNames; - - private BlockBodyNode body; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - private String name; - - public Function(List<String> argumentNames, BlockBodyNode body) { - this.argumentNames = argumentNames; - this.body = body; - } - - public DataContainer evaluate(List<DataContainer> params) throws InterpreterException { - State.getInstance().createScope(); - - if (params.size() != argumentNames.size()) { - return null; - } - - for (int i = 0; i < argumentNames.size(); i++) { - State.getInstance().addSymbolToScope(argumentNames.get(i)); - State.getInstance().setSymbolValueToScope(argumentNames.get(i), params.get(i)); - } - - DataContainer returnValue = body.evaluate(); - - State.getInstance().popScope(); - - return returnValue; - } - -} diff --git a/main/core/runtime/Interpreter.java b/main/core/runtime/Interpreter.java deleted file mode 100644 index 6877ac3..0000000 --- a/main/core/runtime/Interpreter.java +++ /dev/null @@ -1,35 +0,0 @@ -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; - -/** - * Created by jan on 14.6.2016. - */ -public class Interpreter { - private static final Interpreter instance = new Interpreter(); - - public static Interpreter getInstance() { - return instance; - } - - private Interpreter() { - - } - public static String execute(List<ASTNode> sequence) throws InterpreterException { - String output = ""; - for (ASTNode node : sequence) { - DataContainer data = node.evaluate(); - - if (data != null) { - output = data.toString(); - } else { - break; - } - } - return output; - } -} diff --git a/main/core/runtime/Scope.java b/main/core/runtime/Scope.java deleted file mode 100644 index 0bf8907..0000000 --- a/main/core/runtime/Scope.java +++ /dev/null @@ -1,50 +0,0 @@ -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; -import java.util.Map; - -/** - * Created by jan on 20.6.2016. - */ -public class Scope { - private Scope parent = null; - - private Map<String, DataContainer> variables = new HashMap<>(); - private Map<String, Function> functions = new HashMap<>(); - - public void addVariable(String symbol) { - variables.put(symbol, null); - } - - public void setVariableValue(String symbol, DataContainer value) { - variables.replace(symbol, value); - } - - public DataContainer resolveSymbol(String symbol, List<DataContainer> params) throws InterpreterException { - if (functions.containsKey(symbol)) { - DataContainer r = functions.get(symbol).evaluate(params); - return r; - } - if (variables.containsKey(symbol)) { - return variables.get(symbol); - } - else if (parent != null) { - return parent.resolveSymbol(symbol, params); - } - else { - return null; - } - } - - public void setParent(Scope parent) { - this.parent = parent; - } - - public void addFunction(String symbol, Function func) { - functions.put(symbol, func); - } -} diff --git a/main/core/runtime/State.java b/main/core/runtime/State.java deleted file mode 100644 index 8563a77..0000000 --- a/main/core/runtime/State.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime; - -import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.jantuomi.interpreter.main.core.runtime.builtins.BuiltinManager; -import com.jantuomi.interpreter.main.exception.InterpreterException; - -import java.util.Arrays; -import java.util.List; -import java.util.Stack; - -/** - * Created by jan on 11.6.2016. - */ -public class State { - private static final State instance = new State(); - - public static State getInstance() { - return instance; - } - - private Stack<Scope> scopes = new Stack<>(); - - private State() { - /* Push global scope onto the stack */ - Scope globalScope = new Scope(); - - for (Function builtin : BuiltinManager.getInstance().getBuiltins()) { - globalScope.addFunction(builtin.getName(), builtin); - } - - scopes.push(globalScope); - - } - - private DataContainer resolveSymbol(String symbol) throws InterpreterException { - return scopes.peek().resolveSymbol(symbol, Arrays.asList()); - } - - public DataContainer getSymbolValue(String symbol) throws InterpreterException { - DataContainer d = resolveSymbol(symbol); - return d; - } - - public DataContainer getSymbolValue(String symbol, List<DataContainer> parameters) throws InterpreterException { - return scopes.peek().resolveSymbol(symbol, parameters); - } - - public Scope createScope() { - Scope scope = new Scope(); - if (scopes.size() > 0) { - scope.setParent(scopes.peek()); - } else { - scope.setParent(null); - } - scopes.push(scope); - return scope; - } - - public void addSymbolToScope(String symbol) { - scopes.peek().addVariable(symbol); - } - - public void addFunctionToScope(String symbol, Function func) { - scopes.peek().addFunction(symbol, func); - } - - public void setSymbolValueToScope(String symbol, DataContainer value) { - scopes.peek().setVariableValue(symbol, value); - } - - public Scope popScope() { - return scopes.pop(); - } -} diff --git a/main/core/runtime/builtins/AsIntBuiltinFunction.java b/main/core/runtime/builtins/AsIntBuiltinFunction.java deleted file mode 100644 index 210e1e4..0000000 --- a/main/core/runtime/builtins/AsIntBuiltinFunction.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime.builtins; - -import com.jantuomi.interpreter.main.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.jantuomi.interpreter.main.core.parser.datatype.IntegerDataContainer; -import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer; -import com.jantuomi.interpreter.main.core.runtime.Function; -import com.jantuomi.interpreter.main.exception.InterpreterException; - -import java.util.Arrays; -import java.util.List; - -/** - * Created by jan on 21.6.2016. - */ -public class AsIntBuiltinFunction extends Function { - public AsIntBuiltinFunction() { - super( - Arrays.asList("expression"), - null - ); - } - - @Override - public String getName() { - return "as_int"; - } - - @Override - public DataContainer evaluate(List<DataContainer> params) throws InterpreterException { - if (params.size() != 1) { - return null; - } - DataContainer param = params.get(0); - int i = 0; - if (param instanceof StringDataContainer) { - try { - i = Integer.parseInt(((StringDataContainer) param).getData()); - } - catch (NumberFormatException ex) { - return null; - } - } - else if (param instanceof IntegerDataContainer) { - i = ((IntegerDataContainer) param).getData(); - } - else if (param instanceof BooleanDataContainer) { - i = ((BooleanDataContainer) param).getData() ? 1 : 0; - } - return new IntegerDataContainer(i); - } -} diff --git a/main/core/runtime/builtins/BuiltinManager.java b/main/core/runtime/builtins/BuiltinManager.java deleted file mode 100644 index c6c9e26..0000000 --- a/main/core/runtime/builtins/BuiltinManager.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime.builtins; - -import com.jantuomi.interpreter.main.core.runtime.Function; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by jan on 21.6.2016. - */ -public class BuiltinManager { - private static BuiltinManager instance = new BuiltinManager(); - - public static BuiltinManager getInstance() { - return instance; - } - - private List<Function> builtins = new ArrayList<>(); - - private BuiltinManager() { - builtins.add(new OutBuiltinFunction()); - builtins.add(new InBuiltinFunction()); - builtins.add(new ConcatBuiltinFunction()); - builtins.add(new AsIntBuiltinFunction()); - } - - public List<Function> getBuiltins() { - return builtins; - } -} diff --git a/main/core/runtime/builtins/ConcatBuiltinFunction.java b/main/core/runtime/builtins/ConcatBuiltinFunction.java deleted file mode 100644 index 5f87a38..0000000 --- a/main/core/runtime/builtins/ConcatBuiltinFunction.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime.builtins; - -import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer; -import com.jantuomi.interpreter.main.core.runtime.Function; -import com.jantuomi.interpreter.main.exception.InterpreterException; - -import java.util.Arrays; -import java.util.List; - -/** - * Created by jan on 21.6.2016. - */ -public class ConcatBuiltinFunction extends Function { - public ConcatBuiltinFunction() { - super( - Arrays.asList("strings"), - null - ); - } - - @Override - public String getName() { - return "concat"; - } - - @Override - public DataContainer evaluate(List<DataContainer> params) throws InterpreterException { - StringBuilder sb = new StringBuilder(); - for (DataContainer d : params) { - sb.append(d.getData()); - } - - return new StringDataContainer( - sb.toString() - ); - } -} diff --git a/main/core/runtime/builtins/InBuiltinFunction.java b/main/core/runtime/builtins/InBuiltinFunction.java deleted file mode 100644 index 32d6b72..0000000 --- a/main/core/runtime/builtins/InBuiltinFunction.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime.builtins; - -import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer; -import com.jantuomi.interpreter.main.core.runtime.Function; -import com.jantuomi.interpreter.main.exception.InterpreterException; - -import java.util.Arrays; -import java.util.List; -import java.util.Scanner; - -/** - * Created by jan on 21.6.2016. - */ -public class InBuiltinFunction extends Function { - public InBuiltinFunction() { - super( - Arrays.asList("expression"), - null - ); - } - - @Override - public String getName() { - return "in"; - } - - @Override - public DataContainer evaluate(List<DataContainer> params) throws InterpreterException { - if (params.size() > 0) { - DataContainer param = params.get(0); - System.out.print(param.getData().toString()); - } - Scanner in = new Scanner(System.in); - String userInput = in.nextLine(); - return new StringDataContainer(userInput); - } -} diff --git a/main/core/runtime/builtins/OutBuiltinFunction.java b/main/core/runtime/builtins/OutBuiltinFunction.java deleted file mode 100644 index 0611a83..0000000 --- a/main/core/runtime/builtins/OutBuiltinFunction.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.jantuomi.interpreter.main.core.runtime.builtins; - -import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.jantuomi.interpreter.main.core.runtime.Function; -import com.jantuomi.interpreter.main.exception.InterpreterException; - -import java.util.Arrays; -import java.util.List; - -/** - * Created by jan on 21.6.2016. - */ -public class OutBuiltinFunction extends Function { - public OutBuiltinFunction() { - super( - Arrays.asList("expression"), - null - ); - } - - @Override - public String getName() { - return "out"; - } - - @Override - public DataContainer evaluate(List<DataContainer> params) throws InterpreterException { - DataContainer param = params.get(0); - System.out.println(param.getData().toString()); - return param; - } -} |
