From 9c189c2d1ef35184ec9a9d08bdeeb52936902867 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 28 Jun 2016 21:39:10 +0300 Subject: Restructure classes --- src/main/com/jantuomi/borker/Main.java | 6 +-- .../jantuomi/borker/core/parser/ASTGenerator.java | 4 +- .../com/jantuomi/borker/core/parser/Parser.java | 6 +-- .../jantuomi/borker/core/parser/ast/ASTNode.java | 4 +- .../borker/core/parser/ast/AdditionNode.java | 6 +-- .../borker/core/parser/ast/AssignmentNode.java | 4 +- .../borker/core/parser/ast/BlockBodyNode.java | 4 +- .../borker/core/parser/ast/BranchNode.java | 4 +- .../borker/core/parser/ast/DivisionNode.java | 6 +-- .../borker/core/parser/ast/MultiplicationNode.java | 6 +-- .../borker/core/parser/ast/NegationNode.java | 6 +-- .../borker/core/parser/ast/SubtractionNode.java | 6 +-- .../borker/core/parser/ast/SymbolNode.java | 6 +-- .../core/parser/datatype/BooleanDataContainer.java | 10 ++-- .../borker/core/parser/datatype/DataContainer.java | 10 ++-- .../core/parser/datatype/DoubleDataContainer.java | 10 ++-- .../core/parser/datatype/IntegerDataContainer.java | 6 +-- .../core/parser/datatype/StringDataContainer.java | 8 ++-- .../core/parser/datatype/VoidDataContainer.java | 6 +-- .../com/jantuomi/borker/core/runtime/Function.java | 4 +- .../jantuomi/borker/core/runtime/Interpreter.java | 4 +- .../com/jantuomi/borker/core/runtime/Scope.java | 4 +- .../com/jantuomi/borker/core/runtime/State.java | 8 ++-- .../runtime/builtins/AsIntBuiltinFunction.java | 4 +- .../runtime/builtins/ConcatBuiltinFunction.java | 4 +- .../core/runtime/builtins/InBuiltinFunction.java | 4 +- .../core/runtime/builtins/OutBuiltinFunction.java | 7 +-- .../jantuomi/borker/core/tokenizer/Tokenizer.java | 6 +-- .../borker/core/tokenizer/token/Token.java | 10 ++-- .../core/tokenizer/token/types/AdditionToken.java | 4 +- .../tokenizer/token/types/AssignmentToken.java | 6 +-- .../core/tokenizer/token/types/BlockBodyToken.java | 4 +- .../core/tokenizer/token/types/BranchToken.java | 4 +- .../core/tokenizer/token/types/DivisionToken.java | 4 +- .../tokenizer/token/types/FunctionDefineToken.java | 4 +- .../tokenizer/token/types/MultiplicationToken.java | 4 +- .../core/tokenizer/token/types/NegationToken.java | 4 +- .../core/tokenizer/token/types/OpenParenToken.java | 4 +- .../tokenizer/token/types/StringLiteralToken.java | 4 +- .../tokenizer/token/types/SubtractionToken.java | 4 +- .../core/tokenizer/token/types/SymbolToken.java | 4 +- .../token/types/VariableDeclareToken.java | 4 +- .../com/jantuomi/borker/exception/BorkError.java | 53 ++++++++++++++++++++++ .../borker/exception/ExceptionManager.java | 4 +- .../borker/exception/InterpreterException.java | 53 ---------------------- src/test/com/jantuomi/borker/MainTest.java | 4 +- .../borker/core/tokenizer/TokenizerTest.java | 4 +- 47 files changed, 173 insertions(+), 172 deletions(-) create mode 100644 src/main/com/jantuomi/borker/exception/BorkError.java delete mode 100644 src/main/com/jantuomi/borker/exception/InterpreterException.java diff --git a/src/main/com/jantuomi/borker/Main.java b/src/main/com/jantuomi/borker/Main.java index d7445a8..c5cbca7 100644 --- a/src/main/com/jantuomi/borker/Main.java +++ b/src/main/com/jantuomi/borker/Main.java @@ -7,7 +7,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; @@ -40,13 +40,13 @@ public class Main { try { run(input); - } catch (InterpreterException e) { + } catch (BorkError e) { e.printStackTrace(); } } } - public static void run(String input) throws InterpreterException { + public static void run(String input) throws BorkError { Tokenizer tokenizer = Tokenizer.getInstance(); List sequence = tokenizer.tokenize(input); diff --git a/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java b/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java index 4086929..e22b763 100644 --- a/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java +++ b/src/main/com/jantuomi/borker/core/parser/ASTGenerator.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.ArrayList; import java.util.List; @@ -19,7 +19,7 @@ public class ASTGenerator { return instance; } - public List generate(List trees) throws InterpreterException { + public List generate(List trees) throws BorkError { List list = new ArrayList<>(); for (Token root : trees) { diff --git a/src/main/com/jantuomi/borker/core/parser/Parser.java b/src/main/com/jantuomi/borker/core/parser/Parser.java index 99f81e9..2552d30 100644 --- a/src/main/com/jantuomi/borker/core/parser/Parser.java +++ b/src/main/com/jantuomi/borker/core/parser/Parser.java @@ -3,8 +3,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.ArrayList; import java.util.List; @@ -29,7 +29,7 @@ public class Parser { private Stack stack; - public List parse(List tokens) throws InterpreterException { + public List parse(List tokens) throws BorkError { this.tokens = tokens; this.stack = new Stack<>(); @@ -78,7 +78,7 @@ public class Parser { if (stack.size() > 0) { args.add(stack.pop()); } else { - ExceptionManager.raise(InterpreterException.ExceptionType.ArgumentError, t.getLine(), + ExceptionManager.raise(BorkError.ExceptionType.ArgumentError, t.getLine(), t.toString(), Integer.toString(argumentInfo.getCount())); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java b/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java index 3967edb..0af95a8 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/ASTNode.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.List; @@ -11,7 +11,7 @@ import java.util.List; */ abstract public class ASTNode { - public abstract DataContainer evaluate() throws InterpreterException; + public abstract DataContainer evaluate() throws BorkError; protected Token source; diff --git a/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java index ba99a54..24ecb43 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/AdditionNode.java @@ -2,8 +2,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.Arrays; import java.util.List; @@ -18,7 +18,7 @@ public class AdditionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer operand1 = lhs.evaluate(); DataContainer operand2 = rhs.evaluate(); @@ -26,7 +26,7 @@ public class AdditionNode extends BinaryOperatorNode { if (result != null) { return result; } else { - ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), + ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), operand1.getType().toString(), operand2.getType().toString()); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java b/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java index 94013c2..82e31dc 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/AssignmentNode.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -17,7 +17,7 @@ public class AssignmentNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { SymbolNode symbol = (SymbolNode) lhs; DataContainer rValue = rhs.evaluate(); State.getInstance().setSymbolValueToScope( diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java index dd0582c..7aaf407 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/BlockBodyNode.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 17.6.2016. @@ -14,7 +14,7 @@ public class BlockBodyNode extends VarargOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer returnValue = new VoidDataContainer(); for (ASTNode node : args) { diff --git a/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java b/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java index 12f304c..e92c42e 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/BranchNode.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -23,7 +23,7 @@ public class BranchNode extends ASTNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer ev = expression.evaluate(); boolean returnValue = false; if (ev instanceof BooleanDataContainer) { diff --git a/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java index 04af834..6eccb48 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/DivisionNode.java @@ -2,8 +2,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.Arrays; import java.util.List; @@ -18,7 +18,7 @@ public class DivisionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer operand1 = lhs.evaluate(); DataContainer operand2 = rhs.evaluate(); @@ -26,7 +26,7 @@ public class DivisionNode extends BinaryOperatorNode { if (result != null) { return result; } else { - ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), + ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), operand1.getType().toString(), operand2.getType().toString()); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java b/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java index 53bf8ee..24f1730 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/MultiplicationNode.java @@ -2,8 +2,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.Arrays; import java.util.List; @@ -18,7 +18,7 @@ public class MultiplicationNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer operand1 = lhs.evaluate(); DataContainer operand2 = rhs.evaluate(); @@ -26,7 +26,7 @@ public class MultiplicationNode extends BinaryOperatorNode { if (result != null) { return result; } else { - ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), + ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), operand1.getType().toString(), operand2.getType().toString()); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java b/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java index 2617198..c37ae1e 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/NegationNode.java @@ -4,8 +4,8 @@ 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; -import com.jantuomi.borker.exception.InterpreterException; /** * Created by jan on 21.6.2016. @@ -16,7 +16,7 @@ public class NegationNode extends UnaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer d = getOperand().evaluate(); if (d instanceof BooleanDataContainer) { @@ -27,7 +27,7 @@ public class NegationNode extends UnaryOperatorNode { ((IntegerDataContainer) d).getData() != 0 ); } - ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), "not", d.toString()); + ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), "not", d.toString()); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java b/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java index 6f0b3fb..3de887a 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/SubtractionNode.java @@ -2,8 +2,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.Arrays; import java.util.List; @@ -17,7 +17,7 @@ public class SubtractionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { DataContainer operand1 = lhs.evaluate(); DataContainer operand2 = rhs.evaluate(); @@ -25,7 +25,7 @@ public class SubtractionNode extends BinaryOperatorNode { if (result != null) { return result; } else { - ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), + ExceptionManager.raise(BorkError.ExceptionType.TypeError, source.getLine(), operand1.getType().toString(), operand2.getType().toString()); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java b/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java index f473989..0a483d1 100644 --- a/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java +++ b/src/main/com/jantuomi/borker/core/parser/ast/SymbolNode.java @@ -3,8 +3,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; @@ -42,7 +42,7 @@ public class SymbolNode extends ASTNode { } @Override - public DataContainer evaluate() throws InterpreterException { + public DataContainer evaluate() throws BorkError { List paramValues = new ArrayList<>(); if (parameterListNode != null) { for (ASTNode param : parameterListNode.getChildren()) { @@ -53,7 +53,7 @@ public class SymbolNode extends ASTNode { if (returnValue != null) { return returnValue; } else { - ExceptionManager.raise(InterpreterException.ExceptionType.UndeclaredSymbolError, source.getLine(), name, + ExceptionManager.raise(BorkError.ExceptionType.UndeclaredSymbolError, source.getLine(), name, StringUtils.join(paramValues.stream().map(dataContainer -> dataContainer.toString()).collect(Collectors.toList()), ",")); return null; } diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java index 14f4a80..855f464 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/BooleanDataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 16.6.2016. @@ -23,22 +23,22 @@ public class BooleanDataContainer extends DataContainer { } @Override - public DataContainer add(DataContainer other) throws InterpreterException { + public DataContainer add(DataContainer other) throws BorkError { return null; } @Override - public DataContainer subtract(DataContainer other) throws InterpreterException { + public DataContainer subtract(DataContainer other) throws BorkError { return null; } @Override - public DataContainer multiply(DataContainer other) throws InterpreterException { + public DataContainer multiply(DataContainer other) throws BorkError { return null; } @Override - public DataContainer divide(DataContainer other) throws InterpreterException { + public DataContainer divide(DataContainer 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 index cdb202d..6db9748 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/DataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 11.6.2016. @@ -30,8 +30,8 @@ abstract public class DataContainer { @Override abstract public String toString(); - abstract public DataContainer add(DataContainer other) throws InterpreterException; - public abstract DataContainer subtract(DataContainer other) throws InterpreterException; - public abstract DataContainer multiply(DataContainer other) throws InterpreterException; - public abstract DataContainer divide(DataContainer other) throws InterpreterException; + abstract public DataContainer add(DataContainer other) throws BorkError; + public abstract DataContainer subtract(DataContainer other) throws BorkError; + public abstract DataContainer multiply(DataContainer other) throws BorkError; + public abstract DataContainer divide(DataContainer 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 index e7fea19..5c86d12 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/DoubleDataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 22.6.2016. @@ -21,7 +21,7 @@ public class DoubleDataContainer extends DataContainer { } @Override - public DataContainer add(DataContainer other) throws InterpreterException { + public DataContainer add(DataContainer other) throws BorkError { switch (other.getType()) { case Double: return new DoubleDataContainer( @@ -37,7 +37,7 @@ public class DoubleDataContainer extends DataContainer { } @Override - public DataContainer subtract(DataContainer other) throws InterpreterException { + public DataContainer subtract(DataContainer other) throws BorkError { switch (other.getType()) { case Double: return new DoubleDataContainer( @@ -53,7 +53,7 @@ public class DoubleDataContainer extends DataContainer { } @Override - public DataContainer multiply(DataContainer other) throws InterpreterException { + public DataContainer multiply(DataContainer other) throws BorkError { switch (other.getType()) { case Double: return new DoubleDataContainer( @@ -69,7 +69,7 @@ public class DoubleDataContainer extends DataContainer { } @Override - public DataContainer divide(DataContainer other) throws InterpreterException { + public DataContainer divide(DataContainer other) throws BorkError { switch (other.getType()) { case Double: return new DoubleDataContainer( diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java index a0e42f6..ce95830 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/IntegerDataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 16.6.2016. @@ -56,7 +56,7 @@ public class IntegerDataContainer extends DataContainer { } @Override - public DataContainer multiply(DataContainer other) throws InterpreterException { + public DataContainer multiply(DataContainer other) throws BorkError { switch (other.getType()) { case Integer: return new IntegerDataContainer( @@ -73,7 +73,7 @@ public class IntegerDataContainer extends DataContainer { } @Override - public DataContainer divide(DataContainer other) throws InterpreterException { + public DataContainer divide(DataContainer other) throws BorkError { switch (other.getType()) { case Integer: return new IntegerDataContainer( diff --git a/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java b/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java index 6984642..407e954 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/StringDataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 16.6.2016. @@ -30,17 +30,17 @@ public class StringDataContainer extends DataContainer { } @Override - public DataContainer subtract(DataContainer other) throws InterpreterException { + public DataContainer subtract(DataContainer other) throws BorkError { return null; } @Override - public DataContainer multiply(DataContainer other) throws InterpreterException { + public DataContainer multiply(DataContainer other) throws BorkError { return null; } @Override - public DataContainer divide(DataContainer other) throws InterpreterException { + public DataContainer divide(DataContainer 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 index 4b7be6c..b25b0d9 100644 --- a/src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java +++ b/src/main/com/jantuomi/borker/core/parser/datatype/VoidDataContainer.java @@ -1,6 +1,6 @@ package com.jantuomi.borker.core.parser.datatype; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 17.6.2016. @@ -28,12 +28,12 @@ public class VoidDataContainer extends DataContainer { } @Override - public DataContainer multiply(DataContainer other) throws InterpreterException { + public DataContainer multiply(DataContainer other) throws BorkError { return null; } @Override - public DataContainer divide(DataContainer other) throws InterpreterException { + public DataContainer divide(DataContainer 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 index 714dcea..a2b4ce3 100644 --- a/src/main/com/jantuomi/borker/core/runtime/Function.java +++ b/src/main/com/jantuomi/borker/core/runtime/Function.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.List; @@ -30,7 +30,7 @@ public class Function { this.body = body; } - public DataContainer evaluate(List params) throws InterpreterException { + public DataContainer evaluate(List params) throws BorkError { State.getInstance().createScope(); if (params.size() != argumentNames.size()) { diff --git a/src/main/com/jantuomi/borker/core/runtime/Interpreter.java b/src/main/com/jantuomi/borker/core/runtime/Interpreter.java index 2a7bbbf..ea6e0a1 100644 --- a/src/main/com/jantuomi/borker/core/runtime/Interpreter.java +++ b/src/main/com/jantuomi/borker/core/runtime/Interpreter.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.List; @@ -19,7 +19,7 @@ public class Interpreter { private Interpreter() { } - public static String execute(List sequence) throws InterpreterException { + public static String execute(List sequence) throws BorkError { String output = ""; for (ASTNode node : sequence) { DataContainer data = node.evaluate(); diff --git a/src/main/com/jantuomi/borker/core/runtime/Scope.java b/src/main/com/jantuomi/borker/core/runtime/Scope.java index 90c1578..ae57788 100644 --- a/src/main/com/jantuomi/borker/core/runtime/Scope.java +++ b/src/main/com/jantuomi/borker/core/runtime/Scope.java @@ -1,7 +1,7 @@ package com.jantuomi.borker.core.runtime; import com.jantuomi.borker.core.parser.datatype.DataContainer; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.HashMap; import java.util.List; @@ -24,7 +24,7 @@ public class Scope { variables.replace(symbol, value); } - public DataContainer resolveSymbol(String symbol, List params) throws InterpreterException { + public DataContainer resolveSymbol(String symbol, List params) throws BorkError { if (functions.containsKey(symbol)) { DataContainer r = functions.get(symbol).evaluate(params); return r; diff --git a/src/main/com/jantuomi/borker/core/runtime/State.java b/src/main/com/jantuomi/borker/core/runtime/State.java index 1ad09e7..b60796c 100644 --- a/src/main/com/jantuomi/borker/core/runtime/State.java +++ b/src/main/com/jantuomi/borker/core/runtime/State.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -32,16 +32,16 @@ public class State { } - private DataContainer resolveSymbol(String symbol) throws InterpreterException { + private DataContainer resolveSymbol(String symbol) throws BorkError { return scopes.peek().resolveSymbol(symbol, Arrays.asList()); } - public DataContainer getSymbolValue(String symbol) throws InterpreterException { + public DataContainer getSymbolValue(String symbol) throws BorkError { DataContainer d = resolveSymbol(symbol); return d; } - public DataContainer getSymbolValue(String symbol, List parameters) throws InterpreterException { + public DataContainer getSymbolValue(String symbol, List parameters) throws BorkError { return scopes.peek().resolveSymbol(symbol, parameters); } diff --git a/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java index e1f2a93..10dc93f 100644 --- a/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java +++ b/src/main/com/jantuomi/borker/core/runtime/builtins/AsIntBuiltinFunction.java @@ -5,7 +5,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -27,7 +27,7 @@ public class AsIntBuiltinFunction extends Function { } @Override - public DataContainer evaluate(List params) throws InterpreterException { + public DataContainer evaluate(List params) throws BorkError { if (params.size() != 1) { return null; } diff --git a/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java index 293b918..ab89871 100644 --- a/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java +++ b/src/main/com/jantuomi/borker/core/runtime/builtins/ConcatBuiltinFunction.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -25,7 +25,7 @@ public class ConcatBuiltinFunction extends Function { } @Override - public DataContainer evaluate(List params) throws InterpreterException { + public DataContainer evaluate(List params) throws BorkError { StringBuilder sb = new StringBuilder(); for (DataContainer d : params) { sb.append(d.getData()); diff --git a/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java index 8d9184f..f88bf9f 100644 --- a/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java +++ b/src/main/com/jantuomi/borker/core/runtime/builtins/InBuiltinFunction.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -26,7 +26,7 @@ public class InBuiltinFunction extends Function { } @Override - public DataContainer evaluate(List params) throws InterpreterException { + public DataContainer evaluate(List params) throws BorkError { if (params.size() > 0) { DataContainer param = params.get(0); System.out.print(param.getData().toString()); diff --git a/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java b/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java index 4e977c8..c76f9c4 100644 --- a/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java +++ b/src/main/com/jantuomi/borker/core/runtime/builtins/OutBuiltinFunction.java @@ -1,8 +1,9 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -24,9 +25,9 @@ public class OutBuiltinFunction extends Function { } @Override - public DataContainer evaluate(List params) throws InterpreterException { + public DataContainer evaluate(List params) throws BorkError { DataContainer param = params.get(0); System.out.println(param.getData().toString()); - return param; + 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 index d7d8870..a9e46df 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/Tokenizer.java @@ -2,8 +2,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -71,7 +71,7 @@ public class Tokenizer { erroneousTokenTypes.add(Token.Type.NotAToken); } - public List tokenize(String string) throws InterpreterException { + public List tokenize(String string) throws BorkError { sourceString = string; tokens.clear(); int line = 1; @@ -93,7 +93,7 @@ public class Tokenizer { } if (erroneousTokenTypes.contains(token.getTokenType())) { - ExceptionManager.raise(InterpreterException.ExceptionType.IllegalTokenError, line, token.getText()); + ExceptionManager.raise(BorkError.ExceptionType.IllegalTokenError, line, token.getText()); } String tokenRawText = token.getRawText(); diff --git a/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java b/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java index b43755d..3b05960 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/Token.java @@ -1,8 +1,8 @@ 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 com.jantuomi.borker.exception.InterpreterException; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; @@ -27,7 +27,7 @@ abstract public class Token { } } - abstract public ASTNode generateNode() throws InterpreterException; + abstract public ASTNode generateNode() throws BorkError; /* Token types, ordered by precedence */ public enum Type { @@ -130,7 +130,7 @@ abstract public class Token { initialize(type, text, text); } - public static Token makeToken(String string, Map regexes, int line) throws InterpreterException { + public static Token makeToken(String string, Map regexes, int line) throws BorkError { Type type = Type.NotAToken; String text = Character.toString(string.charAt(0)); @@ -147,7 +147,7 @@ abstract public class Token { return null; } - public static Token matchToken(String string, Type type, String regex, int line) throws InterpreterException { + 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); @@ -160,7 +160,7 @@ abstract public class Token { token.setLine(line); } else { - ExceptionManager.raise(InterpreterException.ExceptionType.IllegalTokenError, line, + ExceptionManager.raise(BorkError.ExceptionType.IllegalTokenError, line, type.toString() ); } 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 index ee49846..0e98f13 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/AdditionToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 15.6.2016. @@ -13,7 +13,7 @@ public class AdditionToken extends BinaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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 index 8d8903e..42ec2f0 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/AssignmentToken.java @@ -3,8 +3,8 @@ 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; -import com.jantuomi.borker.exception.InterpreterException; /** * Created by jan on 20.6.2016. @@ -18,11 +18,11 @@ public class AssignmentToken extends BinaryOperatorToken { // TODO this and the node @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { ASTNode lhsNode = lhs.generateNode(); if (!(lhsNode instanceof SymbolNode)) { - ExceptionManager.raise(InterpreterException.ExceptionType.SyntaxError, getLine(), "non-symbol " + toString()); + ExceptionManager.raise(BorkError.ExceptionType.SyntaxError, getLine(), "non-symbol " + toString()); return null; } 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 index c6a251d..80a3f9e 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BlockBodyToken.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.ArrayList; import java.util.List; @@ -17,7 +17,7 @@ public class BlockBodyToken extends VarargOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { BlockBodyNode node = new BlockBodyNode(this); List statements = new ArrayList<>(); for (int i = 0; i < args.size() - 1; i++) { 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 index dd74c50..209c1ab 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/BranchToken.java @@ -4,7 +4,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.Arrays; import java.util.List; @@ -22,7 +22,7 @@ public class BranchToken extends VarargOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { return new BranchNode(this, expression.generateNode(), (BlockBodyNode) branch.generateNode() 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 index 2b9892e..3d52579 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/DivisionToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 15.6.2016. @@ -13,7 +13,7 @@ public class DivisionToken extends BinaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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/FunctionDefineToken.java b/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java index dab0e3a..dae7c67 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/FunctionDefineToken.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import java.util.ArrayList; import java.util.List; @@ -17,7 +17,7 @@ public class FunctionDefineToken extends VarargOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { FunctionDefineNode node = new FunctionDefineNode(this); node.setName(args.get(0).getText()); 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 index fc55e7a..8d9d429 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/MultiplicationToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 15.6.2016. @@ -13,7 +13,7 @@ public class MultiplicationToken extends BinaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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 index fbe0787..1252e38 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/NegationToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 21.6.2016. @@ -14,7 +14,7 @@ public class NegationToken extends UnaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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 index 37a1df0..07469e1 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/OpenParenToken.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 19.6.2016. @@ -14,7 +14,7 @@ public class OpenParenToken extends VarargOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { ParameterListNode node = new ParameterListNode(this); for (Token token : args) { 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 index 7370444..13135fa 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/StringLiteralToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 21.6.2016. @@ -13,7 +13,7 @@ public class StringLiteralToken extends TerminalToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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 index 9e9d2cb..06effcd 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/SubtractionToken.java @@ -2,7 +2,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 16.6.2016. @@ -13,7 +13,7 @@ public class SubtractionToken extends BinaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + 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 index 76dbad2..60dd133 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/SymbolToken.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 16.6.2016. @@ -15,7 +15,7 @@ public class SymbolToken extends OptionalArgumentToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { SymbolNode node = new SymbolNode(this); node.setName(this.getText()); if (optionalArgument != null) { 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 index c999452..2d0ff88 100644 --- a/src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java +++ b/src/main/com/jantuomi/borker/core/tokenizer/token/types/VariableDeclareToken.java @@ -3,7 +3,7 @@ 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.InterpreterException; +import com.jantuomi.borker.exception.BorkError; /** * Created by jan on 20.6.2016. @@ -16,7 +16,7 @@ public class VariableDeclareToken extends UnaryOperatorToken { } @Override - public ASTNode generateNode() throws InterpreterException { + public ASTNode generateNode() throws BorkError { SymbolToken st = (SymbolToken) operand; VariableDeclareNode node = new VariableDeclareNode(this, (SymbolNode) st.generateNode()); diff --git a/src/main/com/jantuomi/borker/exception/BorkError.java b/src/main/com/jantuomi/borker/exception/BorkError.java new file mode 100644 index 0000000..a9edb20 --- /dev/null +++ b/src/main/com/jantuomi/borker/exception/BorkError.java @@ -0,0 +1,53 @@ +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 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 index b9b302b..238c341 100644 --- a/src/main/com/jantuomi/borker/exception/ExceptionManager.java +++ b/src/main/com/jantuomi/borker/exception/ExceptionManager.java @@ -14,8 +14,8 @@ public class ExceptionManager { return instance; } - public static void raise(InterpreterException.ExceptionType ex, int line, String... args) throws InterpreterException { - InterpreterException e = new InterpreterException(ex, line, args); + 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/exception/InterpreterException.java b/src/main/com/jantuomi/borker/exception/InterpreterException.java deleted file mode 100644 index 153da0a..0000000 --- a/src/main/com/jantuomi/borker/exception/InterpreterException.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 InterpreterException extends Exception { - - public enum ExceptionType { - IllegalTokenError, - SyntaxError, - TypeError, - ArgumentError, - UndeclaredSymbolError - } - - public static Map 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 InterpreterException(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/test/com/jantuomi/borker/MainTest.java b/src/test/com/jantuomi/borker/MainTest.java index e0342a4..6e45892 100644 --- a/src/test/com/jantuomi/borker/MainTest.java +++ b/src/test/com/jantuomi/borker/MainTest.java @@ -1,6 +1,6 @@ package com.jantuomi.borker; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -43,7 +43,7 @@ public class MainTest { } @Test - public void testWholeProcedure() throws InterpreterException { + public void testWholeProcedure() throws BorkError { String input = "- + 2 5 1"; Main.run(input); diff --git a/src/test/com/jantuomi/borker/core/tokenizer/TokenizerTest.java b/src/test/com/jantuomi/borker/core/tokenizer/TokenizerTest.java index fdaa022..7f07e67 100644 --- a/src/test/com/jantuomi/borker/core/tokenizer/TokenizerTest.java +++ b/src/test/com/jantuomi/borker/core/tokenizer/TokenizerTest.java @@ -2,7 +2,7 @@ package com.jantuomi.borker.core.tokenizer; import com.jantuomi.borker.core.tokenizer.token.Token; import com.jantuomi.borker.core.tokenizer.token.types.IntegerLiteralToken; -import com.jantuomi.borker.exception.InterpreterException; +import com.jantuomi.borker.exception.BorkError; import org.junit.Test; import java.util.List; @@ -15,7 +15,7 @@ import static org.junit.Assert.assertTrue; public class TokenizerTest { @Test - public void testAddition() throws InterpreterException { + public void testAddition() throws BorkError { String testString = "1 2 +"; List list = Tokenizer.getInstance().tokenize(testString); -- cgit v1.3