aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/com/jantuomi/borker
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-07-26 19:43:13 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2016-07-26 19:47:14 +0300
commit8234767203a7f673b12c8f51b83762c511274366 (patch)
tree3dfa221a1bc0c94860363a74bdaf4c3dbb23226d /src/main/com/jantuomi/borker
parent9c189c2d1ef35184ec9a9d08bdeeb52936902867 (diff)
Rename project to tunkki
Diffstat (limited to 'src/main/com/jantuomi/borker')
-rw-r--r--src/main/com/jantuomi/borker/Main.java90
-rw-r--r--src/main/com/jantuomi/borker/core/CommandLineArgumentContainer.java73
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ASTGenerator.java43
-rw-r--r--src/main/com/jantuomi/borker/core/parser/Parser.java108
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java40
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java39
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java34
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/BinaryOperatorNode.java17
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java26
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/BooleanLiteralNode.java30
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java42
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java39
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/DoubleLiteralNode.java30
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/EmptyNode.java27
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/FunctionDefineNode.java73
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/IntegerLiteralNode.java30
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java39
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java34
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/ParameterListNode.java38
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/StringLiteralNode.java27
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java38
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java70
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/UnaryOperatorNode.java31
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/VarargOperatorNode.java26
-rw-r--r--src/main/com/jantuomi/borker/core/parser/ast/VariableDeclareNode.java32
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java44
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java37
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java86
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java91
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java46
-rw-r--r--src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java39
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/Function.java52
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/Interpreter.java35
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/Scope.java50
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/State.java74
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java52
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/builtins/BuiltinManager.java30
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java38
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java38
-rw-r--r--src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java33
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java119
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/ArgumentInfo.java49
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/Token.java212
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/TokenFactory.java71
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java22
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java36
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/BinaryOperatorToken.java40
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java35
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/BooleanLiteralToken.java18
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java48
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/ClosedParenToken.java18
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/CommentToken.java18
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java23
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/DoubleLiteralToken.java18
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/EndBlockToken.java17
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java39
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/IntegerLiteralToken.java18
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java23
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java20
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java34
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/OptionalArgumentToken.java48
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java19
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java22
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java31
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/TerminalToken.java39
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/UnaryOperatorToken.java39
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/VarargOperatorToken.java45
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java25
-rw-r--r--src/main/com/jantuomi/borker/core/tokenizer/token/types/WhitespaceToken.java37
-rw-r--r--src/main/com/jantuomi/borker/exception/BorkError.java53
-rw-r--r--src/main/com/jantuomi/borker/exception/ExceptionManager.java21
-rw-r--r--src/main/com/jantuomi/borker/utils/Utilities.java17
72 files changed, 0 insertions, 3095 deletions
diff --git a/src/main/com/jantuomi/borker/Main.java b/src/main/com/jantuomi/borker/Main.java
deleted file mode 100644
index c5cbca7..0000000
--- a/src/main/com/jantuomi/borker/Main.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.jantuomi.borker;
-
-import com.jantuomi.borker.core.CommandLineArgumentContainer;
-import com.jantuomi.borker.core.parser.ASTGenerator;
-import com.jantuomi.borker.core.parser.Parser;
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.runtime.Interpreter;
-import com.jantuomi.borker.core.tokenizer.Tokenizer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import org.kohsuke.args4j.CmdLineException;
-import org.kohsuke.args4j.CmdLineParser;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Scanner;
-
-public class Main {
-
- public static void main(String[] args) throws Exception {
- boolean parseSuccess = parseArguments(args);
- if (!parseSuccess) {
- return;
- }
-
- if (CommandLineArgumentContainer.getInstance().isInteractive()) {
- repl();
- } else {
- String sourceFileContents = CommandLineArgumentContainer.getInstance().getSourceFileContents();
- run(sourceFileContents);
- }
- }
-
- public static void repl() {
- Scanner scanner = new Scanner(System.in);
- String input;
- while (true) {
- System.out.print(">> ");
- input = scanner.nextLine();
-
- try {
- run(input);
- } catch (BorkError e) {
- e.printStackTrace();
- }
- }
- }
-
- public static void run(String input) throws BorkError {
- Tokenizer tokenizer = Tokenizer.getInstance();
- List<Token> sequence = tokenizer.tokenize(input);
-
- Collections.reverse(sequence);
-
- List<Token> trees = Parser.getInstance().parse(sequence);
- if (CommandLineArgumentContainer.getInstance().isDebugModeActive()) {
- Parser.getInstance().printAllTrees(trees);
- }
-
- List<ASTNode> nodes = ASTGenerator.getInstance().generate(trees);
- if (CommandLineArgumentContainer.getInstance().isDebugModeActive()) {
- ASTGenerator.getInstance().printAllTrees(nodes);
- }
-
- String output = Interpreter.execute(nodes);
-
- if (output.trim().length() > 0) {
- System.out.println(output);
- }
- }
-
- public static boolean parseArguments(String[] args) {
- CommandLineArgumentContainer container = CommandLineArgumentContainer.getInstance();
- CmdLineParser parser = new CmdLineParser(container);
-
-
- try {
- if (args.length == 0) {
- throw new CmdLineException("Please provide an argument.");
- }
- parser.parseArgument(args);
- } catch (CmdLineException e) {
- System.err.println(e.getMessage());
- parser.printUsage(System.err);
- return false;
- }
-
- return true;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/CommandLineArgumentContainer.java b/src/main/com/jantuomi/borker/core/CommandLineArgumentContainer.java
deleted file mode 100644
index b89c88e..0000000
--- a/src/main/com/jantuomi/borker/core/CommandLineArgumentContainer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.jantuomi.borker.core;
-
-
-import org.kohsuke.args4j.Option;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-
-/**
- * Created by jan on 10.6.2016.
- */
-
-public class CommandLineArgumentContainer {
-
- private CommandLineArgumentContainer() {}
-
- private static final CommandLineArgumentContainer instance = new CommandLineArgumentContainer();
- private File srcFile;
-
-
- @Option(name="-f", usage="Execute script in file FILE.")
- public void setFile(File file) {
- this.srcFile = file;
- }
-
- @Option(name="-i", usage="Run in interactive mode.")
- public boolean interactiveModeActive = false;
-
-
- @Option(name="-d", usage="Display verbose debug output.")
- public boolean debugModeActive = false;
-
- public static CommandLineArgumentContainer getInstance() {
- return instance;
- }
-
- public boolean isInteractive() {
- return interactiveModeActive;
- }
-
- public boolean isDebugModeActive() {
- return debugModeActive;
- }
-
- public String getSourceFileContents() {
- if (srcFile == null) {
- return null;
- }
-
- BufferedReader br;
- String contents = null;
- try {
- br = new BufferedReader(new FileReader(srcFile));
- StringBuilder sb = new StringBuilder();
- String line = br.readLine();
-
- while (line != null) {
- sb.append(line);
- sb.append(System.lineSeparator());
- line = br.readLine();
- }
- contents = sb.toString();
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- } finally {
- // Add a newline at the end for comment rows to terminate nicely
- return contents + "\n";
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java b/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java
deleted file mode 100644
index e22b763..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.jantuomi.borker.core.parser;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class ASTGenerator {
- private static final ASTGenerator instance = new ASTGenerator();
-
- private ASTGenerator() {}
-
- public static ASTGenerator getInstance() {
- return instance;
- }
-
- public List<ASTNode> generate(List<Token> trees) throws BorkError {
- List<ASTNode> list = new ArrayList<>();
-
- for (Token root : trees) {
- list.add(root.generateNode());
- }
-
- return list;
- }
-
- public void printTree(ASTNode root) {
- System.out.println("### AST Tree begin ###");
- root.print(0);
- System.out.println("### AST Tree end ###");
- }
-
- public void printAllTrees(List<ASTNode> trees) {
- for (ASTNode tree : trees) {
- printTree(tree);
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/Parser.java b/src/main/com/jantuomi/borker/core/parser/Parser.java
deleted file mode 100644
index 2552d30..0000000
--- a/src/main/com/jantuomi/borker/core/parser/Parser.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package com.jantuomi.borker.core.parser;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Stack;
-
-/**
- * Created by jan on 11.6.2016.
- */
-public class Parser {
- private static final Parser instance = new Parser();
-
- private List<Token> tokens;
- private List<ASTNode> statementSequence;
-
- public static Parser getInstance() {
- return instance;
- }
-
- private Parser() {
-
- }
-
- private Stack<Token> stack;
-
- public List<Token> parse(List<Token> tokens) throws BorkError {
- this.tokens = tokens;
- this.stack = new Stack<>();
-
- List<Token> args;
- List<Token> output = new ArrayList<>();
- for (Token t : tokens) {
- if (t.getTokenType() == Token.Type.NewlineToken) {
-// if (stack.size() > 0) {
-// output.add(stack.pop());
-// }
- continue;
- }
-
- args = new ArrayList<>();
- ArgumentInfo argumentInfo = t.getArgumentInfo();
-
- /*
- This branch is executed if the token has a variable list of arguments
- */
- if (argumentInfo.getVarargs()) {
- while (true) {
- if (stack.size() > 0) {
- Token arg = stack.pop();
- if (arg.getTokenType() != argumentInfo.getTerminator()) {
- args.add(arg);
- }
- else {
- args.add(arg);
- break;
- }
- }
- }
- }
- /*
- If the token has an optional argument type (it is only an argument if
- it is of certain type)
- */
- else if (argumentInfo.getOptionalArgument() != null) {
- if (stack.size() > 0 && stack.peek().getTokenType() == argumentInfo.getOptionalArgument()) {
- args.add(stack.pop());
- }
- }
- /* Normal cases with a fixed list of arguments */
- else {
- for (int i = 0; i < argumentInfo.getCount(); i++) {
- if (stack.size() > 0) {
- args.add(stack.pop());
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.ArgumentError, t.getLine(),
- t.toString(), Integer.toString(argumentInfo.getCount()));
- return null;
- }
- }
- }
-
- Token result = t.setArguments(args);
- stack.push(result);
- }
- while (stack.size() > 0) {
- output.add(stack.pop());
- }
- return output;
- }
-
- public void printTree(Token e) {
- System.out.println("### Token Tree begin ###");
- e.print(0);
- System.out.println("### Token Tree end ###");
- }
-
- public void printAllTrees(List<Token> trees) {
- for (Token tree : trees) {
- printTree(tree);
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java b/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java
deleted file mode 100644
index 0af95a8..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.List;
-
-/**
- * Created by jan on 11.6.2016.
- */
-abstract public class ASTNode {
-
- public abstract DataContainer evaluate() throws BorkError;
-
- protected Token source;
-
- public ASTNode(Token token) {
- this.source = token;
- }
-
- public Token.Type tokenType() {
- return source.getTokenType();
- }
-
- abstract List<ASTNode> getChildren();
-
- public void print(int indent) {
- for (int i = 0; i < indent; i++) {
- System.out.print("\t");
- }
-
- System.out.println(source.toString());
- for (ASTNode node : getChildren()) {
- if (node != null) {
- node.print(indent + 1);
- }
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java
deleted file mode 100644
index 24ecb43..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class AdditionNode extends BinaryOperatorNode {
-
- public AdditionNode(Token token, ASTNode lhs, ASTNode rhs) {
- super(token, lhs, rhs);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer operand1 = lhs.evaluate();
- DataContainer operand2 = rhs.evaluate();
-
- DataContainer result = operand1.add(operand2);
- if (result != null) {
- return result;
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(),
- operand1.getType().toString(), operand2.getType().toString());
- return null;
- }
-
- }
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java b/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java
deleted file mode 100644
index 82e31dc..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.runtime.State;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class AssignmentNode extends BinaryOperatorNode {
- public AssignmentNode(Token token, SymbolNode lhs, ASTNode rhs) {
- super(token, lhs, rhs);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- SymbolNode symbol = (SymbolNode) lhs;
- DataContainer rValue = rhs.evaluate();
- State.getInstance().setSymbolValueToScope(
- symbol.getName(),
- rValue
- );
- return rValue;
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BinaryOperatorNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BinaryOperatorNode.java
deleted file mode 100644
index a8f473f..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/BinaryOperatorNode.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-/**
- * Created by jan on 16.6.2016.
- */
-abstract public class BinaryOperatorNode extends ASTNode {
- protected ASTNode lhs;
- protected ASTNode rhs;
-
- public BinaryOperatorNode(Token token, ASTNode lhs, ASTNode rhs) {
- super(token);
- this.lhs = lhs;
- this.rhs = rhs;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java
deleted file mode 100644
index 7aaf407..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.VoidDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class BlockBodyNode extends VarargOperatorNode {
- public BlockBodyNode(Token token) {
- super(token);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer returnValue = new VoidDataContainer();
-
- for (ASTNode node : args) {
- returnValue = node.evaluate();
- }
-
- return returnValue;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BooleanLiteralNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BooleanLiteralNode.java
deleted file mode 100644
index b5818a9..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/BooleanLiteralNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.BooleanDataContainer;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class BooleanLiteralNode extends ASTNode {
- private BooleanDataContainer value;
-
- public BooleanLiteralNode(Token token) {
- super(token);
- value = new BooleanDataContainer(Boolean.parseBoolean(token.getText()));
- }
-
- @Override
- public DataContainer evaluate() {
- return value;
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java
deleted file mode 100644
index e92c42e..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.BooleanDataContainer;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class BranchNode extends ASTNode {
-
- private ASTNode expression;
- private BlockBodyNode branch;
-
- public BranchNode(Token token, ASTNode expression, BlockBodyNode branch) {
- super(token);
- this.expression = expression;
- this.branch = branch;
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer ev = expression.evaluate();
- boolean returnValue = false;
- if (ev instanceof BooleanDataContainer) {
- returnValue = ((BooleanDataContainer) ev).getData();
- if (returnValue) {
- branch.evaluate();
- }
- }
- return new BooleanDataContainer(returnValue);
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(expression, branch);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java
deleted file mode 100644
index 6eccb48..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class DivisionNode extends BinaryOperatorNode {
-
- public DivisionNode(Token token, ASTNode lhs, ASTNode rhs) {
- super(token, lhs, rhs);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer operand1 = lhs.evaluate();
- DataContainer operand2 = rhs.evaluate();
-
- DataContainer result = operand1.divide(operand2);
- if (result != null) {
- return result;
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(),
- operand1.getType().toString(), operand2.getType().toString());
- return null;
- }
-
- }
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/DoubleLiteralNode.java b/src/main/com/jantuomi/borker/core/parser/ast/DoubleLiteralNode.java
deleted file mode 100644
index 084218b..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/DoubleLiteralNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.DoubleDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class DoubleLiteralNode extends ASTNode {
- private DoubleDataContainer value;
-
- public DoubleLiteralNode(Token token) {
- super(token);
- value = new DoubleDataContainer(Double.parseDouble(token.getText()));
- }
-
- @Override
- public DataContainer evaluate() {
- return value;
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/EmptyNode.java b/src/main/com/jantuomi/borker/core/parser/ast/EmptyNode.java
deleted file mode 100644
index cd97f44..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/EmptyNode.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.VoidDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class EmptyNode extends ASTNode {
- public EmptyNode(Token source) {
- super(source);
- }
-
- @Override
- public DataContainer evaluate() {
- return new VoidDataContainer();
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/FunctionDefineNode.java b/src/main/com/jantuomi/borker/core/parser/ast/FunctionDefineNode.java
deleted file mode 100644
index 2365511..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/FunctionDefineNode.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.runtime.Function;
-import com.jantuomi.borker.core.runtime.State;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class FunctionDefineNode extends VarargOperatorNode {
-
- private String name;
-
- public void setBody(ASTNode body) {
- this.body = body;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- private ASTNode body;
-
- public FunctionDefineNode(Token token) {
- super(token);
- }
-
- @Override
- public DataContainer evaluate() {
- List<String> argumentNames = new ArrayList<>();
- for (ASTNode arg : args) {
- SymbolNode argSym = (SymbolNode) arg;
- argumentNames.add(argSym.getName());
- }
- Function function = new Function(argumentNames, (BlockBodyNode) body);
- function.setName(name);
- State.getInstance().addFunctionToScope(name, function);
-
- return new StringDataContainer("function " + name);
- }
-
- @Override
- public void print(int indent) {
-
- for (int i = 0; i < indent; i++) {
- System.out.print("\t");
- }
-
- System.out.println(String.format("Function %s", name));
-
- for (int i = 0; i < indent + 1; i++) {
- System.out.print("\t");
- }
-
- System.out.println(String.format("Arguments: "));
-
- for (ASTNode node : args) {
- node.print(indent + 2);
- }
-
- for (int i = 0; i < indent + 1; i++) {
- System.out.print("\t");
- }
-
- System.out.println(String.format("Body statements: "));
- body.print(indent + 2);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/IntegerLiteralNode.java b/src/main/com/jantuomi/borker/core/parser/ast/IntegerLiteralNode.java
deleted file mode 100644
index 573d491..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/IntegerLiteralNode.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.IntegerDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class IntegerLiteralNode extends ASTNode {
- private IntegerDataContainer value;
-
- public IntegerLiteralNode(Token token) {
- super(token);
- value = new IntegerDataContainer(Integer.parseInt(token.getText()));
- }
-
- @Override
- public DataContainer evaluate() {
- return value;
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java b/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java
deleted file mode 100644
index 24f1730..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class MultiplicationNode extends BinaryOperatorNode {
-
- public MultiplicationNode(Token token, ASTNode lhs, ASTNode rhs) {
- super(token, lhs, rhs);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer operand1 = lhs.evaluate();
- DataContainer operand2 = rhs.evaluate();
-
- DataContainer result = operand1.multiply(operand2);
- if (result != null) {
- return result;
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(),
- operand1.getType().toString(), operand2.getType().toString());
- return null;
- }
-
- }
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java b/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java
deleted file mode 100644
index c37ae1e..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.BooleanDataContainer;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.IntegerDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class NegationNode extends UnaryOperatorNode {
- public NegationNode(Token token, ASTNode operand) {
- super(token, operand);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer d = getOperand().evaluate();
-
- if (d instanceof BooleanDataContainer) {
- return new BooleanDataContainer(!((BooleanDataContainer) d).getData());
- }
- else if (d instanceof IntegerDataContainer) {
- return new BooleanDataContainer(
- ((IntegerDataContainer) d).getData() != 0
- );
- }
- ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), "not", d.toString());
- return null;
-
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/ParameterListNode.java b/src/main/com/jantuomi/borker/core/parser/ast/ParameterListNode.java
deleted file mode 100644
index 2d76694..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/ParameterListNode.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by jan on 19.6.2016.
- */
-public class ParameterListNode extends ASTNode {
-
- private List<ASTNode> parameters = new ArrayList<>();
-
- public void addParameter(ASTNode param) {
- parameters.add(param);
- }
-
- public List<ASTNode> getParameters() {
- return parameters;
- }
-
- public ParameterListNode(Token token) {
- super(token);
- }
-
- @Override
- public DataContainer evaluate() {
- // TODO use State to evaluate function
- return null;
- }
-
- @Override
- List<ASTNode> getChildren() {
- return parameters;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/StringLiteralNode.java b/src/main/com/jantuomi/borker/core/parser/ast/StringLiteralNode.java
deleted file mode 100644
index 214316a..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/StringLiteralNode.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class StringLiteralNode extends ASTNode {
- @Override
- public DataContainer evaluate() {
- return new StringDataContainer(source.getText());
- }
-
- public StringLiteralNode(Token source) {
- super(source);
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java
deleted file mode 100644
index 3de887a..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class SubtractionNode extends BinaryOperatorNode {
- public SubtractionNode(Token token, ASTNode lhs, ASTNode rhs) {
- super(token, lhs, rhs);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- DataContainer operand1 = lhs.evaluate();
- DataContainer operand2 = rhs.evaluate();
-
- DataContainer result = operand1.subtract(operand2);
- if (result != null) {
- return result;
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(),
- operand1.getType().toString(), operand2.getType().toString());
- return null;
- }
-
- }
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java b/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java
deleted file mode 100644
index 0a483d1..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.runtime.State;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-import org.apache.commons.lang3.StringUtils;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class SymbolNode extends ASTNode {
-
- public ParameterListNode getParameterListNode() {
- return parameterListNode;
- }
-
- public void setParameterListNode(ParameterListNode parameterListNode) {
- this.parameterListNode = parameterListNode;
- }
-
- private ParameterListNode parameterListNode;
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- private String name;
-
- public SymbolNode(Token token) {
- super(token);
- }
-
- @Override
- public DataContainer evaluate() throws BorkError {
- List<DataContainer> paramValues = new ArrayList<>();
- if (parameterListNode != null) {
- for (ASTNode param : parameterListNode.getChildren()) {
- paramValues.add(param.evaluate());
- }
- }
- DataContainer returnValue = State.getInstance().getSymbolValue(name, paramValues);
- if (returnValue != null) {
- return returnValue;
- } else {
- ExceptionManager.raise(BorkError.ExceptionType.UndeclaredSymbolError, source.getLine(), name,
- StringUtils.join(paramValues.stream().map(dataContainer -> dataContainer.toString()).collect(Collectors.toList()), ","));
- return null;
- }
- }
-
- @Override
- List<ASTNode> getChildren() {
- if (parameterListNode == null) {
- return Arrays.asList();
- } else {
- return Arrays.asList(parameterListNode);
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/UnaryOperatorNode.java b/src/main/com/jantuomi/borker/core/parser/ast/UnaryOperatorNode.java
deleted file mode 100644
index 2636bfe..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/UnaryOperatorNode.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 21.6.2016.
- */
-abstract public class UnaryOperatorNode extends ASTNode {
- public UnaryOperatorNode(Token token, ASTNode operand) {
- super(token);
- this.operand = operand;
- }
-
- public ASTNode getOperand() {
- return operand;
- }
-
- public void setOperand(ASTNode operand) {
- this.operand = operand;
- }
-
- private ASTNode operand;
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList(operand);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/VarargOperatorNode.java b/src/main/com/jantuomi/borker/core/parser/ast/VarargOperatorNode.java
deleted file mode 100644
index 007bdf6..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/VarargOperatorNode.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.List;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public abstract class VarargOperatorNode extends ASTNode {
-
- protected List<ASTNode> args;
-
- public VarargOperatorNode(Token token) {
- super(token);
- }
-
- @Override
- public List<ASTNode> getChildren() {
- return args;
- }
-
- public void setArgs(List<ASTNode> args) {
- this.args = args;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/ast/VariableDeclareNode.java b/src/main/com/jantuomi/borker/core/parser/ast/VariableDeclareNode.java
deleted file mode 100644
index e37b17f..0000000
--- a/src/main/com/jantuomi/borker/core/parser/ast/VariableDeclareNode.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.jantuomi.borker.core.parser.ast;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.runtime.State;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 20.6.2016.
- */
-public class VariableDeclareNode extends ASTNode {
- private SymbolNode variable;
-
- public VariableDeclareNode(Token source, SymbolNode variable) {
- super(source);
- this.variable = variable;
- }
-
- @Override
- public DataContainer evaluate() {
- State.getInstance().addSymbolToScope(variable.getName());
- return new StringDataContainer(variable.getName());
- }
-
- @Override
- List<ASTNode> getChildren() {
- return Arrays.asList();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java
deleted file mode 100644
index 855f464..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class BooleanDataContainer extends DataContainer<Boolean> {
-
-
- public BooleanDataContainer(boolean value) {
- setData(value);
- }
-
- @Override
- public Type getType() {
- return Type.Boolean;
- }
-
- @Override
- public String toString() {
- return Boolean.toString(getData());
- }
-
- @Override
- public DataContainer<Boolean> add(DataContainer<Boolean> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<Boolean> subtract(DataContainer<Boolean> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<Boolean> multiply(DataContainer<Boolean> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<Boolean> divide(DataContainer<Boolean> other) throws BorkError {
- return null;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java
deleted file mode 100644
index 6db9748..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 11.6.2016.
- */
-abstract public class DataContainer<T> {
-
- public enum Type {
- Integer,
- Double,
- String,
- Boolean,
- Void
- }
-
- abstract public Type getType();
-
- private T data;
-
- public T getData() {
- return data;
- }
-
- public void setData(T data) {
- this.data = data;
- }
-
- @Override
- abstract public String toString();
-
- abstract public DataContainer<T> add(DataContainer<T> other) throws BorkError;
- public abstract DataContainer<T> subtract(DataContainer<T> other) throws BorkError;
- public abstract DataContainer<T> multiply(DataContainer<T> other) throws BorkError;
- public abstract DataContainer<T> divide(DataContainer<T> other) throws BorkError;
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java
deleted file mode 100644
index 5c86d12..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 22.6.2016.
- */
-public class DoubleDataContainer extends DataContainer<Double> {
- public DoubleDataContainer(double value) {
- setData(value);
- }
-
- @Override
- public Type getType() {
- return Type.Double;
- }
-
- @Override
- public String toString() {
- return getData().toString();
- }
-
- @Override
- public DataContainer add(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Double:
- return new DoubleDataContainer(
- getData() + ((DoubleDataContainer) other).getData()
- );
- case Integer:
- return new DoubleDataContainer(
- getData() + ((IntegerDataContainer) other).getData()
- );
- default:
- return null;
- }
- }
-
- @Override
- public DataContainer subtract(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Double:
- return new DoubleDataContainer(
- getData() - ((DoubleDataContainer) other).getData()
- );
- case Integer:
- return new DoubleDataContainer(
- getData() - ((IntegerDataContainer) other).getData()
- );
- default:
- return null;
- }
- }
-
- @Override
- public DataContainer multiply(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Double:
- return new DoubleDataContainer(
- getData() * ((DoubleDataContainer) other).getData()
- );
- case Integer:
- return new DoubleDataContainer(
- getData() * ((IntegerDataContainer) other).getData()
- );
- default:
- return null;
- }
- }
-
- @Override
- public DataContainer divide(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Double:
- return new DoubleDataContainer(
- getData() / ((DoubleDataContainer) other).getData()
- );
- case Integer:
- return new DoubleDataContainer(
- getData() / ((IntegerDataContainer) other).getData()
- );
- default:
- return null;
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java
deleted file mode 100644
index ce95830..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class IntegerDataContainer extends DataContainer<Integer> {
-
- public IntegerDataContainer(int value) {
- setData(value);
- }
-
- @Override
- public Type getType() {
- return Type.Integer;
- }
-
- @Override
- public String toString() {
- return Integer.toString(getData());
- }
-
- @Override
- public DataContainer add(DataContainer other) {
- switch (other.getType()) {
- case Integer:
- return new IntegerDataContainer(
- this.getData() + ((IntegerDataContainer) other).getData()
- );
- case Double:
- return new DoubleDataContainer(
- (double) getData() + ((DoubleDataContainer) other).getData()
- );
- default:
- return null;
-
- }
- }
-
- @Override
- public DataContainer subtract(DataContainer other) {
- switch (other.getType()) {
- case Integer:
- return new IntegerDataContainer(
- this.getData() - ((IntegerDataContainer) other).getData()
- );
- case Double:
- return new DoubleDataContainer(
- (double) getData() - ((DoubleDataContainer) other).getData()
- );
- default:
- return null;
-
- }
- }
-
- @Override
- public DataContainer multiply(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Integer:
- return new IntegerDataContainer(
- this.getData() * ((IntegerDataContainer) other).getData()
- );
- case Double:
- return new DoubleDataContainer(
- (double) getData() * ((DoubleDataContainer) other).getData()
- );
- default:
- return null;
-
- }
- }
-
- @Override
- public DataContainer divide(DataContainer other) throws BorkError {
- switch (other.getType()) {
- case Integer:
- return new IntegerDataContainer(
- this.getData() / ((IntegerDataContainer) other).getData()
- );
- case Double:
- return new DoubleDataContainer(
- (double) getData() / ((DoubleDataContainer) other).getData()
- );
- default:
- return null;
-
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java
deleted file mode 100644
index 407e954..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class StringDataContainer extends DataContainer<String> {
-
-
- public StringDataContainer(String text) {
- setData(text);
- }
-
- @Override
- public Type getType() {
- return Type.String;
- }
-
- @Override
- public String toString() {
- return getData();
- }
-
- @Override
- public DataContainer<String> add(DataContainer<String> other) {
- return new StringDataContainer(
- getData() + other.getData()
- );
- }
-
- @Override
- public DataContainer<String> subtract(DataContainer<String> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<String> multiply(DataContainer<String> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<String> divide(DataContainer<String> other) throws BorkError {
- return null;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java
deleted file mode 100644
index b25b0d9..0000000
--- a/src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.parser.datatype;
-
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 17.6.2016.
- */
-public class VoidDataContainer extends DataContainer<Integer> {
-
- @Override
- public Type getType() {
- return Type.Void;
- }
-
- @Override
- public String toString() {
- return "";
- }
-
- @Override
- public DataContainer<Integer> add(DataContainer<Integer> other) {
- return null;
- }
-
- @Override
- public DataContainer<Integer> subtract(DataContainer<Integer> other) {
- return null;
- }
-
- @Override
- public DataContainer<Integer> multiply(DataContainer<Integer> other) throws BorkError {
- return null;
- }
-
- @Override
- public DataContainer<Integer> divide(DataContainer<Integer> other) throws BorkError {
- return null;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/runtime/Function.java b/src/main/com/jantuomi/borker/core/runtime/Function.java
deleted file mode 100644
index a2b4ce3..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/Function.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.jantuomi.borker.core.runtime;
-
-import com.jantuomi.borker.core.parser.ast.BlockBodyNode;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- 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/src/main/com/jantuomi/borker/core/runtime/Interpreter.java b/src/main/com/jantuomi/borker/core/runtime/Interpreter.java
deleted file mode 100644
index ea6e0a1..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/Interpreter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jantuomi.borker.core.runtime;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- String output = "";
- for (ASTNode node : sequence) {
- DataContainer data = node.evaluate();
-
- if (data != null) {
- output = data.toString();
- } else {
- break;
- }
- }
- return output;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/runtime/Scope.java b/src/main/com/jantuomi/borker/core/runtime/Scope.java
deleted file mode 100644
index ae57788..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/Scope.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.jantuomi.borker.core.runtime;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- 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/src/main/com/jantuomi/borker/core/runtime/State.java b/src/main/com/jantuomi/borker/core/runtime/State.java
deleted file mode 100644
index b60796c..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/State.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.jantuomi.borker.core.runtime;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.runtime.builtins.BuiltinManager;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- return scopes.peek().resolveSymbol(symbol, Arrays.asList());
- }
-
- public DataContainer getSymbolValue(String symbol) throws BorkError {
- DataContainer d = resolveSymbol(symbol);
- return d;
- }
-
- public DataContainer getSymbolValue(String symbol, List<DataContainer> parameters) throws BorkError {
- 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/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java
deleted file mode 100644
index 10dc93f..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.jantuomi.borker.core.runtime.builtins;
-
-import com.jantuomi.borker.core.parser.datatype.BooleanDataContainer;
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.IntegerDataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.runtime.Function;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- 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/src/main/com/jantuomi/borker/core/runtime/builtins/BuiltinManager.java b/src/main/com/jantuomi/borker/core/runtime/builtins/BuiltinManager.java
deleted file mode 100644
index 18f49a9..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/builtins/BuiltinManager.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.jantuomi.borker.core.runtime.builtins;
-
-import com.jantuomi.borker.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/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java
deleted file mode 100644
index ab89871..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.jantuomi.borker.core.runtime.builtins;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.runtime.Function;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- StringBuilder sb = new StringBuilder();
- for (DataContainer d : params) {
- sb.append(d.getData());
- }
-
- return new StringDataContainer(
- sb.toString()
- );
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java
deleted file mode 100644
index f88bf9f..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.jantuomi.borker.core.runtime.builtins;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.StringDataContainer;
-import com.jantuomi.borker.core.runtime.Function;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- 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/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java
deleted file mode 100644
index c76f9c4..0000000
--- a/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.jantuomi.borker.core.runtime.builtins;
-
-import com.jantuomi.borker.core.parser.datatype.DataContainer;
-import com.jantuomi.borker.core.parser.datatype.VoidDataContainer;
-import com.jantuomi.borker.core.runtime.Function;
-import com.jantuomi.borker.exception.BorkError;
-
-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 BorkError {
- DataContainer param = params.get(0);
- System.out.println(param.getData().toString());
- return new VoidDataContainer();
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java b/src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java
deleted file mode 100644
index a9e46df..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.jantuomi.borker.core.tokenizer;
-
-
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by jan on 10.6.2016.
- */
-public class Tokenizer {
- private String sourceString;
-
- public List<Token> getTokens() {
- return tokens;
- }
-
- private List<Token> tokens = new ArrayList<>();
-
- private static Map<Token.Type, String> tokenRegexes = new LinkedHashMap<>();
- private static final List<Token.Type> discardedTokenTypes = new ArrayList<>();
- private static final List<Token.Type> erroneousTokenTypes = new ArrayList<>();
-
- private static final Tokenizer instance = new Tokenizer();
-
- public static final Tokenizer getInstance() {
- return instance;
- }
-
- private Tokenizer() {
- tokenRegexes.put(Token.Type.CommentToken, "^\\/\\*(.*?)\\*\\/");
-
- tokenRegexes.put(Token.Type.DoubleLiteralToken, "^([-+]?[0-9]*\\.?[0-9]+)f\\b");
- tokenRegexes.put(Token.Type.IntegerLiteralToken, "^([-+]?\\d+)\\b");
- tokenRegexes.put(Token.Type.BooleanLiteralToken, "^(true|false)\\b");
- tokenRegexes.put(Token.Type.StringLiteralToken, "^\"(.*?)\"");
-
- tokenRegexes.put(Token.Type.WhitespaceToken, "^( |\t)");
- tokenRegexes.put(Token.Type.NewlineToken, "^(\n|\r\n)");
- tokenRegexes.put(Token.Type.AdditionToken, "^(\\+)");
- tokenRegexes.put(Token.Type.SubtractionToken, "^(\\-)");
- tokenRegexes.put(Token.Type.DivisionToken, "^(\\/)");
- tokenRegexes.put(Token.Type.MultiplicationToken, "^(\\*)");
- tokenRegexes.put(Token.Type.AssignmentToken, "^(set)\\b");
- tokenRegexes.put(Token.Type.LessThanToken, "^(\\<)");
- tokenRegexes.put(Token.Type.GreaterThanToken, "^(\\>)");
- tokenRegexes.put(Token.Type.LessOrEqualThanToken, "^(\\<\\=)");
- tokenRegexes.put(Token.Type.GreaterOrEqualThanToken, "^(\\>\\=)");
- tokenRegexes.put(Token.Type.EqualsToken, "^(\\=\\=)");
- tokenRegexes.put(Token.Type.NotEqualsToken, "^(\\!\\=)");
- tokenRegexes.put(Token.Type.OpenParenToken, "^(\\()");
- tokenRegexes.put(Token.Type.ClosedParenToken, "^(\\))");
- tokenRegexes.put(Token.Type.FunctionDefineToken, "^(func)\\b");
- tokenRegexes.put(Token.Type.FunctionBodyToken, "^(as)\\b");
- tokenRegexes.put(Token.Type.BranchBodyToken, "^(then)\\b");
- tokenRegexes.put(Token.Type.EndBlockToken, "^(end)\\b");
- tokenRegexes.put(Token.Type.NegationToken, "^(not)\\b");
- tokenRegexes.put(Token.Type.DeclarationToken, "^(decl)\\b");
- tokenRegexes.put(Token.Type.BranchToken, "^(if)\\b");
-
- tokenRegexes.put(Token.Type.SymbolToken, "^([a-zA-Z]+\\w*)");
-
- discardedTokenTypes.add(Token.Type.WhitespaceToken);
- discardedTokenTypes.add(Token.Type.CommentToken);
-
- erroneousTokenTypes.add(Token.Type.NotAToken);
- }
-
- public List<Token> tokenize(String string) throws BorkError {
- sourceString = string;
- tokens.clear();
- int line = 1;
- for (int i = 0; i < string.length();) {
-
- Token token = Token.makeToken(string.substring(i), tokenRegexes, line);
-
- if (token == null) {
- i++;
- continue;
- }
-
- if (token.getTokenType() == Token.Type.NewlineToken) {
- line++;
- }
-
- if (!discardedTokenTypes.contains(token.getTokenType())) {
- tokens.add(token);
- }
-
- if (erroneousTokenTypes.contains(token.getTokenType())) {
- ExceptionManager.raise(BorkError.ExceptionType.IllegalTokenError, line, token.getText());
- }
-
- String tokenRawText = token.getRawText();
- if (tokenRawText == null) {
- tokenRawText = token.getText();
- }
- if (tokenRawText != null) {
- i += tokenRawText.length();
- } else {
- i++;
- }
- }
- return tokens;
- }
-
- public static void printTokens(List<Token> tokens) {
- System.out.println("### Tokens: ###");
- for (Token token : tokens) {
- System.out.println(String.format("%-40s %s", token.getTokenType(), token.getText()));
- }
- System.out.println("### End ###");
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/ArgumentInfo.java b/src/main/com/jantuomi/borker/core/tokenizer/token/ArgumentInfo.java
deleted file mode 100644
index 967b341..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/ArgumentInfo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class ArgumentInfo {
- private int count = 0;
- private boolean isVarargs = false;
-
- public Token.Type getOptionalArgument() {
- return optionalArgument;
- }
-
- public void setOptionalArgument(Token.Type optionalArgument) {
- this.optionalArgument = optionalArgument;
- }
-
- private Token.Type optionalArgument = null;
-
- public Token.Type getTerminator() {
- return terminator;
- }
-
- public void setTerminator(Token.Type terminator) {
- this.terminator = terminator;
- }
-
- private Token.Type terminator;
-
- public ArgumentInfo(int count) {
- this.count = count;
- }
-
- public ArgumentInfo() {
-
- }
-
- public void setVariable(boolean value) {
- this.isVarargs = value;
- }
-
- public boolean getVarargs() {
- return isVarargs;
- }
-
- public int getCount() {
- return count;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java b/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java
deleted file mode 100644
index 3b05960..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-
-/**
- * Created by jan on 10.6.2016.
- */
-abstract public class Token {
-
- public void print(int indent) {
- for (int i = 0; i < indent; i++) {
- System.out.print("\t");
- }
- System.out.println(toString());
- for (Token child : getChildren()) {
- child.print(indent + 1);
- }
- }
-
- abstract public ASTNode generateNode() throws BorkError;
-
- /* Token types, ordered by precedence */
- public enum Type {
- CommentToken,
-
- AdditionToken,
- SubtractionToken,
- DivisionToken,
- MultiplicationToken,
-
- AssignmentToken,
-
- LessThanToken,
- GreaterThanToken,
- LessOrEqualThanToken,
- GreaterOrEqualThanToken,
- EqualsToken,
- NotEqualsToken,
-
- OpenParenToken,
- ClosedParenToken,
-
- FunctionDefineToken,
- DeclarationToken,
-
- StringLiteralToken,
- IntegerLiteralToken,
- BooleanLiteralToken,
- DoubleLiteralToken,
-
- WhitespaceToken,
- NewlineToken,
-
- BranchToken,
- SymbolToken,
- EndBlockToken,
- FunctionBodyToken,
- BranchBodyToken,
- NegationToken,
-
- NotAToken
- }
-
- abstract public Token setArguments(List<Token> args);
-
- abstract public List<Token> getChildren();
-
- public boolean is(Type type) {
- return getTokenType() == type;
- }
-
- public int getLine() {
- return line;
- }
-
- public void setLine(int line) {
- this.line = line;
- }
-
- private int line;
- private String rawText;
- private String text;
- private Type type;
-
- public String getText() {
- return text;
- }
-
- public Type getTokenType() {
- return this.type;
- }
-
- public String getRawText() {
- return rawText;
- }
-
- public boolean isHigherPrecedenceThan(Token other) {
- return getTokenType().ordinal() <= other.getTokenType().ordinal();
- }
-
- public Token(Type type, String text, String rawText) {
- initialize(type, text, rawText);
- }
-
- public Token(Type type, String text) {
- initialize(type, text);
- }
-
- public Token(Type type) {
- initialize(type, null);
- }
-
- private void initialize(Type type, String text, String rawText) {
- this.type = type;
- this.text = text;
- this.rawText = rawText;
- }
-
- private void initialize(Type type, String text) {
- initialize(type, text, text);
- }
-
- public static Token makeToken(String string, Map<Type, String> regexes, int line) throws BorkError {
- Type type = Type.NotAToken;
- String text = Character.toString(string.charAt(0));
-
- for (Type t : regexes.keySet()) {
- String regex = regexes.get(t);
- Token found = matchToken(string, t, regex, line);
- if (found != null) {
- found.setLine(line);
- return found;
- }
- }
-
- // TODO raise error
- return null;
- }
-
- public static Token matchToken(String string, Type type, String regex, int line) throws BorkError {
- Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
- Matcher matcher = pattern.matcher(string);
-
- if (matcher.find()) {
- String lexeme = matcher.group(1);
- String rawText = matcher.group(0);
-
- Token token = TokenFactory.create(type, lexeme, rawText);
- if (token != null) {
- token.setLine(line);
- }
- else {
- ExceptionManager.raise(BorkError.ExceptionType.IllegalTokenError, line,
- type.toString()
- );
- }
-
- return token;
- }
- return null;
- }
-
- abstract public ArgumentInfo getArgumentInfo();
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder(17, 37)
- .append(text)
- .append(getTokenType())
- .toHashCode();
- }
-
- @Override
- public boolean equals(Object o) {
- if (!(o instanceof Token)) return false;
- if (o == this) return true;
-
- Token rhs = (Token) o;
- return new EqualsBuilder()
- .append(getTokenType(), rhs.getTokenType())
- .append(text, rhs.text)
- .isEquals();
- }
-
- @Override
- public String toString() {
- return String.format(String.format(
- "%s%s",
- getTokenType().toString().replace("Token", ""),
- getText() == null ? "" : " " + getText()
- ));
- }
-
- public String toFormattedString() {
- String textRepr = text;
- return String.format("%-40s %s", getTokenType(), textRepr);
- }
-
- public boolean isSameType(Token other) {
- return type == other.type;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/TokenFactory.java b/src/main/com/jantuomi/borker/core/tokenizer/token/TokenFactory.java
deleted file mode 100644
index 5fa9473..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/TokenFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token;
-
-import com.jantuomi.borker.core.tokenizer.token.types.*;
-
-/**
- * Created by jan on 28.6.2016.
- */
-public class TokenFactory {
- private static TokenFactory instance = new TokenFactory();
-
- public static TokenFactory getInstance() {
- return instance;
- }
-
- private TokenFactory() {
- }
-
- public static Token create(Token.Type type, String text, String rawText) {
- switch (type) {
- case WhitespaceToken:
- return new WhitespaceToken();
- case CommentToken:
- return new CommentToken(text, rawText);
-
- // TODO placeholder whitespace instead of newline
- case NewlineToken:
- return new WhitespaceToken();
-
- case IntegerLiteralToken:
- return new IntegerLiteralToken(text);
- case StringLiteralToken:
- return new StringLiteralToken(text, rawText);
- case BooleanLiteralToken:
- return new BooleanLiteralToken(text);
- case DoubleLiteralToken:
- return new DoubleLiteralToken(text, rawText);
- case AdditionToken:
- return new AdditionToken();
- case SubtractionToken:
- return new SubtractionToken();
- case MultiplicationToken:
- return new MultiplicationToken();
- case DivisionToken:
- return new DivisionToken();
- case FunctionDefineToken:
- return new FunctionDefineToken();
- case EndBlockToken:
- return new EndBlockToken();
- case FunctionBodyToken:
- return new BlockBodyToken("as");
- case BranchBodyToken:
- return new BlockBodyToken("then");
- case DeclarationToken:
- return new VariableDeclareToken();
- case AssignmentToken:
- return new AssignmentToken();
- case SymbolToken:
- return new SymbolToken(text);
- case OpenParenToken:
- return new OpenParenToken();
- case ClosedParenToken:
- return new ClosedParenToken();
- case BranchToken:
- return new BranchToken();
- case NegationToken:
- return new NegationToken();
- default:
- return null;
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java
deleted file mode 100644
index 0e98f13..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.AdditionNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class AdditionToken extends BinaryOperatorToken {
- public AdditionToken() {
- super(Type.AdditionToken);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new AdditionNode(this,
- lhs.generateNode(),
- rhs.generateNode()
- );
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java
deleted file mode 100644
index 42ec2f0..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.AssignmentNode;
-import com.jantuomi.borker.core.parser.ast.SymbolNode;
-import com.jantuomi.borker.exception.BorkError;
-import com.jantuomi.borker.exception.ExceptionManager;
-
-/**
- * Created by jan on 20.6.2016.
- */
-public class AssignmentToken extends BinaryOperatorToken {
-
- public AssignmentToken() {
- super(Type.AssignmentToken, "set");
- }
-
- // TODO this and the node
-
- @Override
- public ASTNode generateNode() throws BorkError {
- ASTNode lhsNode = lhs.generateNode();
-
- if (!(lhsNode instanceof SymbolNode)) {
- ExceptionManager.raise(BorkError.ExceptionType.SyntaxError, getLine(), "non-symbol " + toString());
- return null;
- }
-
- AssignmentNode node = new AssignmentNode(this,
- (SymbolNode) lhsNode,
- rhs.generateNode()
- );
-
- return node;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BinaryOperatorToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BinaryOperatorToken.java
deleted file mode 100644
index 207820a..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BinaryOperatorToken.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 15.6.2016.
- */
-abstract public class BinaryOperatorToken extends Token {
- protected Token lhs;
- protected Token rhs;
-
- public BinaryOperatorToken(Type type) {
- super(type);
- }
-
- public BinaryOperatorToken(Type type, String text) {
- super(type, text);
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- lhs = args.get(0);
- rhs = args.get(1);
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return Arrays.asList(lhs, rhs);
- }
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- return new ArgumentInfo(2);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java
deleted file mode 100644
index 80a3f9e..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.BlockBodyNode;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class BlockBodyToken extends VarargOperatorToken {
- public BlockBodyToken(String keyword) {
- super(Type.FunctionBodyToken, keyword);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- BlockBodyNode node = new BlockBodyNode(this);
- List<ASTNode> statements = new ArrayList<>();
- for (int i = 0; i < args.size() - 1; i++) {
- Token arg = args.get(i);
- statements.add(arg.generateNode());
- }
- node.setArgs(statements);
- return node;
- }
-
- @Override
- public Type getTerminatorTokenType() {
- return Type.EndBlockToken;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BooleanLiteralToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BooleanLiteralToken.java
deleted file mode 100644
index 4e8510c..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BooleanLiteralToken.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.BooleanLiteralNode;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class BooleanLiteralToken extends TerminalToken{
- public BooleanLiteralToken(String text) {
- super(Type.BooleanLiteralToken, text);
- }
-
- @Override
- public ASTNode generateNode() {
- return new BooleanLiteralNode(this);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java
deleted file mode 100644
index 209c1ab..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.BlockBodyNode;
-import com.jantuomi.borker.core.parser.ast.BranchNode;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class BranchToken extends VarargOperatorToken {
-
- private Token expression;
- private BlockBodyToken branch;
-
- public BranchToken() {
- super(Type.BranchToken, "if");
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new BranchNode(this,
- expression.generateNode(),
- (BlockBodyNode) branch.generateNode()
- );
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- expression = args.get(0);
- branch = (BlockBodyToken) args.get(1);
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return Arrays.asList(expression, branch);
- }
-
- @Override
- public Type getTerminatorTokenType() {
- return Type.BranchBodyToken;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/ClosedParenToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/ClosedParenToken.java
deleted file mode 100644
index 3071aaf..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/ClosedParenToken.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-
-/**
- * Created by jan on 19.6.2016.
- */
-public class ClosedParenToken extends TerminalToken {
- public ClosedParenToken() {
- super(Type.ClosedParenToken);
- }
-
- @Override
- public ASTNode generateNode() {
- return null;
- }
-
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/CommentToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/CommentToken.java
deleted file mode 100644
index 4908116..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/CommentToken.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.EmptyNode;
-
-/**
- * Created by jan on 19.6.2016.
- */
-public class CommentToken extends TerminalToken {
- public CommentToken(String text, String rawText) {
- super(Type.CommentToken, text, rawText);
- }
-
- @Override
- public ASTNode generateNode() {
- return new EmptyNode(this);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java
deleted file mode 100644
index 3d52579..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.DivisionNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class DivisionToken extends BinaryOperatorToken {
- public DivisionToken() {
- super(Type.DivisionToken);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new DivisionNode(this,
- lhs.generateNode(),
- rhs.generateNode()
- );
-
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/DoubleLiteralToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/DoubleLiteralToken.java
deleted file mode 100644
index 71da848..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/DoubleLiteralToken.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.DoubleLiteralNode;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class DoubleLiteralToken extends TerminalToken {
- public DoubleLiteralToken(String text, String rawText) {
- super(Type.DoubleLiteralToken, text, rawText);
- }
-
- @Override
- public ASTNode generateNode() {
- return new DoubleLiteralNode(this);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/EndBlockToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/EndBlockToken.java
deleted file mode 100644
index 3a07432..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/EndBlockToken.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class EndBlockToken extends TerminalToken {
- public EndBlockToken() {
- super(Type.EndBlockToken, "end");
- }
-
- @Override
- public ASTNode generateNode() {
- return null;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java
deleted file mode 100644
index dae7c67..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.BlockBodyNode;
-import com.jantuomi.borker.core.parser.ast.FunctionDefineNode;
-import com.jantuomi.borker.exception.BorkError;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class FunctionDefineToken extends VarargOperatorToken {
- public FunctionDefineToken() {
- super(Type.FunctionDefineToken, "func");
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- FunctionDefineNode node = new FunctionDefineNode(this);
- node.setName(args.get(0).getText());
-
- List<ASTNode> funcArgs = new ArrayList<>();
- for (int i = 1; i < args.size() - 1; i++) {
- funcArgs.add(args.get(i).generateNode());
- }
- node.setArgs(funcArgs);
-
- BlockBodyNode bodyNode = (BlockBodyNode) args.get(args.size() - 1).generateNode();
- node.setBody(bodyNode);
- return node;
- }
-
- @Override
- public Type getTerminatorTokenType() {
- return Type.FunctionBodyToken;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/IntegerLiteralToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/IntegerLiteralToken.java
deleted file mode 100644
index 1b18373..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/IntegerLiteralToken.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.IntegerLiteralNode;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class IntegerLiteralToken extends TerminalToken {
- public IntegerLiteralToken(String text) {
- super(Type.IntegerLiteralToken, text);
- }
-
- @Override
- public ASTNode generateNode() {
- return new IntegerLiteralNode(this);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java
deleted file mode 100644
index 8d9d429..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.MultiplicationNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 15.6.2016.
- */
-public class MultiplicationToken extends BinaryOperatorToken {
- public MultiplicationToken() {
- super(Type.MultiplicationToken);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new MultiplicationNode(this,
- lhs.generateNode(),
- rhs.generateNode()
- );
-
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java
deleted file mode 100644
index 1252e38..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.NegationNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class NegationToken extends UnaryOperatorToken {
-
- public NegationToken() {
- super(Type.NegationToken, "not");
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new NegationNode(this, operand.generateNode());
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java
deleted file mode 100644
index 07469e1..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.ParameterListNode;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 19.6.2016.
- */
-public class OpenParenToken extends VarargOperatorToken {
- public OpenParenToken() {
- super(Type.OpenParenToken);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- ParameterListNode node = new ParameterListNode(this);
-
- for (Token token : args) {
- if (token.getTokenType() == Type.ClosedParenToken) {
- continue;
- }
-
- node.addParameter(token.generateNode());
- }
- return node;
- }
-
- @Override
- public Type getTerminatorTokenType() {
- return Type.ClosedParenToken;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/OptionalArgumentToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/OptionalArgumentToken.java
deleted file mode 100644
index 8cf41af..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/OptionalArgumentToken.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 28.6.2016.
- */
-public abstract class OptionalArgumentToken extends Token {
- public OptionalArgumentToken(Type type, String text) {
- super(type, text);
- }
-
- protected Token optionalArgument;
-
- public void setOptionalArgument(OpenParenToken optionalArgument) {
- this.optionalArgument = optionalArgument;
- }
-
- abstract public Token.Type getOptionalArgumentType();
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- ArgumentInfo ai = new ArgumentInfo();
- ai.setOptionalArgument(getOptionalArgumentType());
- return ai;
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- if (args.size() > 0) {
- setOptionalArgument((OpenParenToken) args.get(0));
- }
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- if (optionalArgument == null) {
- return Arrays.asList();
- } else {
- return Arrays.asList(optionalArgument);
- }
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java
deleted file mode 100644
index 13135fa..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.StringLiteralNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 21.6.2016.
- */
-public class StringLiteralToken extends TerminalToken {
- public StringLiteralToken(String text, String rawText) {
- super(Type.StringLiteralToken, text, rawText);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new StringLiteralNode(this);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java
deleted file mode 100644
index 06effcd..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.SubtractionNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class SubtractionToken extends BinaryOperatorToken {
- public SubtractionToken() {
- super(Type.SubtractionToken);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- return new SubtractionNode(this,
- lhs.generateNode(),
- rhs.generateNode()
- );
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java
deleted file mode 100644
index 60dd133..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.ParameterListNode;
-import com.jantuomi.borker.core.parser.ast.SymbolNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class SymbolToken extends OptionalArgumentToken {
-
- public SymbolToken(String name) {
- super(Type.SymbolToken, name);
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- SymbolNode node = new SymbolNode(this);
- node.setName(this.getText());
- if (optionalArgument != null) {
- node.setParameterListNode((ParameterListNode) optionalArgument.generateNode());
- }
- return node;
- }
-
- @Override
- public Type getOptionalArgumentType() {
- return Type.OpenParenToken;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/TerminalToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/TerminalToken.java
deleted file mode 100644
index fb943fe..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/TerminalToken.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 28.6.2016.
- */
-abstract public class TerminalToken extends Token {
- public TerminalToken(Type type, String text, String rawText) {
- super(type, text, rawText);
- }
-
- public TerminalToken(Type type, String text) {
- super(type, text);
- }
-
- public TerminalToken(Type type) {
- super(type);
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return Arrays.asList();
- }
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- return new ArgumentInfo(0);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/UnaryOperatorToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/UnaryOperatorToken.java
deleted file mode 100644
index 7c13ad0..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/UnaryOperatorToken.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 28.6.2016.
- */
-abstract public class UnaryOperatorToken extends Token {
- public UnaryOperatorToken(Type type, String text) {
- super(type, text);
- }
-
- public UnaryOperatorToken(Type type) {
- super(type);
- }
-
- protected Token operand;
-
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- return new ArgumentInfo(1);
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- operand = args.get(0);
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return Arrays.asList(operand);
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/VarargOperatorToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/VarargOperatorToken.java
deleted file mode 100644
index fe82a43..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/VarargOperatorToken.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-abstract public class VarargOperatorToken extends Token {
-
- protected List<Token> args;
-
- public VarargOperatorToken(Type type, String text) {
- super(type, text);
- }
-
- public VarargOperatorToken(Type type) {
- super(type);
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- this.args = args;
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return args;
- }
-
- abstract public Token.Type getTerminatorTokenType();
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- ArgumentInfo ai = new ArgumentInfo();
- ai.setVariable(true);
- ai.setTerminator(getTerminatorTokenType());
- return ai;
-
- }
-
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java
deleted file mode 100644
index 2d0ff88..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.parser.ast.SymbolNode;
-import com.jantuomi.borker.core.parser.ast.VariableDeclareNode;
-import com.jantuomi.borker.exception.BorkError;
-
-/**
- * Created by jan on 20.6.2016.
- */
-public class VariableDeclareToken extends UnaryOperatorToken {
-
-
- public VariableDeclareToken() {
- super(Type.DeclarationToken, "decl");
- }
-
- @Override
- public ASTNode generateNode() throws BorkError {
- SymbolToken st = (SymbolToken) operand;
- VariableDeclareNode node = new VariableDeclareNode(this,
- (SymbolNode) st.generateNode());
- return node;
- }
-}
diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/types/WhitespaceToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/WhitespaceToken.java
deleted file mode 100644
index 7b15e01..0000000
--- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/WhitespaceToken.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.jantuomi.borker.core.tokenizer.token.types;
-
-import com.jantuomi.borker.core.parser.ast.ASTNode;
-import com.jantuomi.borker.core.tokenizer.token.ArgumentInfo;
-import com.jantuomi.borker.core.tokenizer.token.Token;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Created by jan on 16.6.2016.
- */
-public class WhitespaceToken extends Token {
- public WhitespaceToken() {
- super(Type.WhitespaceToken);
- }
-
- @Override
- public ASTNode generateNode() {
- return null;
- }
-
- @Override
- public Token setArguments(List<Token> args) {
- return this;
- }
-
- @Override
- public List<Token> getChildren() {
- return Arrays.asList();
- }
-
- @Override
- public ArgumentInfo getArgumentInfo() {
- return new ArgumentInfo(0);
- }
-}
diff --git a/src/main/com/jantuomi/borker/exception/BorkError.java b/src/main/com/jantuomi/borker/exception/BorkError.java
deleted file mode 100644
index a9edb20..0000000
--- a/src/main/com/jantuomi/borker/exception/BorkError.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.jantuomi.borker.exception;
-
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by jan on 12.6.2016.
- */
-public class BorkError extends Exception {
-
- public enum ExceptionType {
- IllegalTokenError,
- SyntaxError,
- TypeError,
- ArgumentError,
- UndeclaredSymbolError
- }
-
- public static Map<ExceptionType, String> errorTexts = new HashMap<>();
-
- static {
- errorTexts.put(ExceptionType.IllegalTokenError, "Unknown or illegal token %s found.");
- errorTexts.put(ExceptionType.SyntaxError, "Unexpected %s.");
- errorTexts.put(ExceptionType.TypeError, "Incompatible types %s and %s.");
- errorTexts.put(ExceptionType.ArgumentError, "The parameter list given to function %s is either of wrong length or the parameters are of wrong type. Actual: %s");
- errorTexts.put(ExceptionType.UndeclaredSymbolError, "No symbol %s defined, parameters: [%s].");
- }
-
- private ExceptionType exceptionType;
- private String completeMessage;
-
- public BorkError(ExceptionType exceptionType, int line, String... args) {
- super(exceptionType.toString(), null, false, false);
- this.exceptionType = exceptionType;
- this.completeMessage = formatMessage(exceptionType.toString() + ": " + what(exceptionType), line, args);
- }
-
- private static String formatMessage(String message, int line, String... args) {
-
- message = String.format(message, args);
- return String.format("\nline %d: ", line) + message;
- }
-
- public static String what(ExceptionType type) {
- return errorTexts.get(type);
- }
-
- @Override
- public void printStackTrace() {
- System.err.println(completeMessage);
- }
-}
diff --git a/src/main/com/jantuomi/borker/exception/ExceptionManager.java b/src/main/com/jantuomi/borker/exception/ExceptionManager.java
deleted file mode 100644
index 238c341..0000000
--- a/src/main/com/jantuomi/borker/exception/ExceptionManager.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.jantuomi.borker.exception;
-
-/**
- * Created by jan on 10.6.2016.
- */
-public class ExceptionManager {
-
- private static final ExceptionManager instance = new ExceptionManager();
-
- private ExceptionManager() {
- }
-
- public static ExceptionManager getInstance() {
- return instance;
- }
-
- public static void raise(BorkError.ExceptionType ex, int line, String... args) throws BorkError {
- BorkError e = new BorkError(ex, line, args);
- throw e;
- }
-}
diff --git a/src/main/com/jantuomi/borker/utils/Utilities.java b/src/main/com/jantuomi/borker/utils/Utilities.java
deleted file mode 100644
index 60e221d..0000000
--- a/src/main/com/jantuomi/borker/utils/Utilities.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.jantuomi.borker.utils;
-
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-/**
- * Created by jan on 10.6.2016.
- */
-public class Utilities {
- private Utilities() {}
-
- public static String getBasePath() {
- Path currentRelativePath = Paths.get("");
- String s = currentRelativePath.toAbsolutePath().toString();
- return s;
- }
-}