aboutsummaryrefslogtreecommitdiffstats
path: root/main/core/runtime
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-06-28 21:09:43 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2016-07-26 19:47:12 +0300
commit8f84c00978dc05007873a9fe1de6a18511dc3cf8 (patch)
tree39fead540e22addee40b95b68db08cbea620745b /main/core/runtime
parent48dcd488054024d98fe1e659a4029630130d1d35 (diff)
Restructure project for use with maven
Diffstat (limited to 'main/core/runtime')
-rw-r--r--main/core/runtime/Function.java52
-rw-r--r--main/core/runtime/Interpreter.java35
-rw-r--r--main/core/runtime/Scope.java50
-rw-r--r--main/core/runtime/State.java74
-rw-r--r--main/core/runtime/builtins/AsIntBuiltinFunction.java52
-rw-r--r--main/core/runtime/builtins/BuiltinManager.java30
-rw-r--r--main/core/runtime/builtins/ConcatBuiltinFunction.java38
-rw-r--r--main/core/runtime/builtins/InBuiltinFunction.java38
-rw-r--r--main/core/runtime/builtins/OutBuiltinFunction.java32
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;
- }
-}