aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/com/jantuomi
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/com/jantuomi')
-rw-r--r--src/main/com/jantuomi/tunkki/Tunkki.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ASTGenerator.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/Parser.java7
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java8
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/CallNode.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java9
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java6
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java6
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java6
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java10
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/CallableDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/Token.java7
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AdditionToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AssignmentToken.java6
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BlockBodyToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BranchToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/CallToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DeclareAssignToken.java6
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DivisionToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/FunctionDefineToken.java7
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/MultiplicationToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/NegationToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/StringLiteralToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SubtractionToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SymbolToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/VariableDeclareToken.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/Function.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/Scope.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/State.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/BuiltinFunction.java3
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ConcatBuiltinFunction.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java9
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/EqualsBuiltinFunction.java8
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/GetBuiltinFunction.java12
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/IncludeBuiltinFunction.java13
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ListBuiltinFunction.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/OutputBuiltinFunction.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsBooleanBuiltinFunction.java5
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsIntBuiltinFunction.java7
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/math/PowerBuiltinFunction.java9
-rw-r--r--src/main/com/jantuomi/tunkki/exception/ExceptionManager.java7
-rw-r--r--src/main/com/jantuomi/tunkki/exception/TunkkiError.java81
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/CastTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/DivisionByZeroTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/ExpectedDifferentTokenTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/FunctionArgumentTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/GeneralTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/IllegalTokenTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/IncludeTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/NadaTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/SyntaxTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/TunkkiError.java72
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/TypeTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/exception/types/UndeclaredSymbolTunkkiError.java20
-rw-r--r--src/main/com/jantuomi/tunkki/repl/Repl.java3
73 files changed, 420 insertions, 203 deletions
diff --git a/src/main/com/jantuomi/tunkki/Tunkki.java b/src/main/com/jantuomi/tunkki/Tunkki.java
index cae5644..3100d95 100644
--- a/src/main/com/jantuomi/tunkki/Tunkki.java
+++ b/src/main/com/jantuomi/tunkki/Tunkki.java
@@ -7,7 +7,7 @@ import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.runtime.Interpreter;
import com.jantuomi.tunkki.core.parser.tokenizer.Tokenizer;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import com.jantuomi.tunkki.repl.Repl;
import com.jantuomi.tunkki.utils.Utilities;
import org.kohsuke.args4j.CmdLineException;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ASTGenerator.java b/src/main/com/jantuomi/tunkki/core/parser/ASTGenerator.java
index 4aee626..7d8e231 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ASTGenerator.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ASTGenerator.java
@@ -2,7 +2,8 @@ package com.jantuomi.tunkki.core.parser;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.GeneralTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
@@ -34,7 +35,7 @@ public class ASTGenerator {
try {
root.print(0);
} catch (NullPointerException ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.GeneralError, -1, "Malformed syntax tree.");
+ throw new GeneralTunkkiError(-1, "Malformed syntax tree.");
}
System.out.println("### AST Tree end ###");
diff --git a/src/main/com/jantuomi/tunkki/core/parser/Parser.java b/src/main/com/jantuomi/tunkki/core/parser/Parser.java
index 6698bba..dfcf685 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/Parser.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/Parser.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.tokenizer.token.ArgumentInfo;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.ExpectedDifferentTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
@@ -76,9 +77,7 @@ public class Parser {
if (stack.size() > 0) {
args.add(stack.pop());
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.ExpectedDifferentTokenError, t.getLine(),
- t.getText());
- return null;
+ throw new ExpectedDifferentTokenTunkkiError(t.getLine(), t.getText());
}
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java
index 99b68d6..cf7e271 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java
index 27b8662..58345cc 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -26,9 +27,8 @@ public class AdditionNode extends BinaryOperatorNode {
if (result != null) {
return result;
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(),
- operand1.getType().toString(), operand2.getType().toString());
- return null;
+ throw new TypeTunkkiError(source.getLine(),
+ operand1.getType().toString(), operand2.getType().toString());
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java
index cf705c1..38bb269 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java
index b394223..25c10a9 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 17.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java
index adcd098..6bdd4c2 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/CallNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/CallNode.java
index 5e9cd01..be3f0be 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/CallNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/CallNode.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.CallableDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 30.7.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java
index ed841aa..206bbd9 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.ExpectedDifferentTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -23,7 +24,7 @@ public class DeclareAssignNode extends BinaryOperatorNode {
var = (SymbolNode) lhs;
}
catch (Exception ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.ExpectedDifferentTokenError, getLine(), getText());
+ throw new ExpectedDifferentTokenTunkkiError(getLine(), getText());
}
State.getInstance().addSymbolToScope(var.getName());
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java
index 0d233b4..2f7965e 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java
@@ -3,7 +3,9 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.DivisionByZeroTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -27,15 +29,14 @@ public class DivisionNode extends BinaryOperatorNode {
result = operand1.divide(operand2);
}
catch (ArithmeticException ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.DivisionByZeroError, getLine());
+ throw new DivisionByZeroTunkkiError(getLine());
}
if (result != null) {
return result;
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(),
+ throw new TypeTunkkiError(source.getLine(),
operand1.getType().toString(), operand2.getType().toString());
- return null;
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java
index f73fbf4..5c3ad94 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java
@@ -5,7 +5,8 @@ import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.Function;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.ExpectedDifferentTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
@@ -41,7 +42,7 @@ public class FunctionDefineNode extends VarargOperatorNode {
}
}
catch (Exception ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.ExpectedDifferentTokenError, getLine(), getText());
+ throw new ExpectedDifferentTokenTunkkiError(getLine(), getText());
}
Function function = new Function(argumentNames, (BlockBodyNode) body);
function.setName(name);
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java
index 67bdf18..4ec1ef9 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -26,9 +27,8 @@ public class MultiplicationNode extends BinaryOperatorNode {
if (result != null) {
return result;
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(),
+ throw new TypeTunkkiError(source.getLine(),
operand1.getType().toString(), operand2.getType().toString());
- return null;
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java
index e23b25b..273b615 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java
@@ -5,7 +5,8 @@ import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
/**
* Created by jan on 21.6.2016.
@@ -27,8 +28,7 @@ public class NegationNode extends UnaryOperatorNode {
((IntegerDatatype) d).getData() != 0
);
}
- ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(), "not", d.toString());
- return null;
+ throw new TypeTunkkiError(source.getLine(), "not", d.toString());
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java
index 1362801..a88f5fc 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.ast;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -25,9 +26,8 @@ public class SubtractionNode extends BinaryOperatorNode {
if (result != null) {
return result;
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(),
+ throw new TypeTunkkiError(source.getLine(),
operand1.getType().toString(), operand2.getType().toString());
- return null;
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
index a768d8d..ff4c256 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.UndeclaredSymbolTunkkiError;
import java.util.ArrayList;
import java.util.List;
@@ -54,15 +55,14 @@ public class SymbolNode extends ASTNode {
}
/* If a TunkkiError is caught, pass it on with line information */
catch (TunkkiError ex) {
- throw new TunkkiError(ex.getType(), getLine(),
- ex.getArguments().toArray(new String[ex.getArguments().size()]));
+ ex.setLine(getLine());
+ throw ex;
}
if (returnValue != null) {
return returnValue;
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.UndeclaredSymbolError, getLine(), name);
- return null;
+ throw new UndeclaredSymbolTunkkiError(getLine(), name);
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java
index 9a42897..d00b42a 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 16.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/CallableDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/CallableDatatype.java
index d4b93d6..f4f2844 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/CallableDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/CallableDatatype.java
@@ -1,7 +1,7 @@
package com.jantuomi.tunkki.core.parser.datatype;
import com.jantuomi.tunkki.core.runtime.Function;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java
index dcbd66e..f2648c3 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java
index 31a7f96..9652874 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 22.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java
index 51d9d4e..b363942 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 16.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java
index 8b4d44c..f097ee4 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java
index 56c91b6..880d8ad 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java
@@ -1,6 +1,7 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.NadaTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 29.7.2016.
@@ -49,6 +50,6 @@ public class NadaDatatype extends Datatype<Integer> {
}
private void doOperation() throws TunkkiError {
- throw new TunkkiError(TunkkiError.ExceptionType.NadaError, -1);
+ throw new NadaTunkkiError(-1);
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java
index 80dd527..4ffcb49 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 16.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java
index a65f6aa..ae3c8f9 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java
@@ -1,6 +1,6 @@
package com.jantuomi.tunkki.core.parser.datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 17.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java
index 50936b5..4fb54bb 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.tokenizer;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.IllegalTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@@ -95,7 +96,7 @@ public class Tokenizer {
}
if (erroneousTokenTypes.contains(token.getTokenType())) {
- ExceptionManager.raise(TunkkiError.ExceptionType.IllegalTokenError, line, token.getText());
+ throw new IllegalTokenTunkkiError(line, token.getText());
}
String tokenRawText = token.getRawText();
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/Token.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/Token.java
index 17d3cf1..720efcd 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/Token.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/Token.java
@@ -2,7 +2,8 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.IllegalTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
@@ -163,9 +164,7 @@ abstract public class Token {
token.setLine(line);
}
else {
- ExceptionManager.raise(TunkkiError.ExceptionType.IllegalTokenError, line,
- type.toString()
- );
+ throw new IllegalTokenTunkkiError(line, type.toString());
}
return token;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AdditionToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AdditionToken.java
index 5379ffa..01d2fab 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AdditionToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AdditionToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.AdditionNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 15.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AssignmentToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AssignmentToken.java
index e70e258..3167664 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AssignmentToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/AssignmentToken.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.AssignmentNode;
import com.jantuomi.tunkki.core.parser.ast.SymbolNode;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.SyntaxTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 20.6.2016.
@@ -22,8 +23,7 @@ public class AssignmentToken extends BinaryOperatorToken {
ASTNode lhsNode = lhs.generateNode();
if (!(lhsNode instanceof SymbolNode)) {
- ExceptionManager.raise(TunkkiError.ExceptionType.SyntaxError, getLine(), "non-symbol " + toString());
- return null;
+ throw new SyntaxTunkkiError(getLine(), "non-symbol " + toString());
}
AssignmentNode node = new AssignmentNode(this,
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BlockBodyToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BlockBodyToken.java
index 35e1a29..48332f2 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BlockBodyToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BlockBodyToken.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.BlockBodyNode;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BranchToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BranchToken.java
index e9f8bcb..c4dfaf4 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BranchToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/BranchToken.java
@@ -4,7 +4,7 @@ import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.BlockBodyNode;
import com.jantuomi.tunkki.core.parser.ast.BranchNode;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/CallToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/CallToken.java
index d59ad80..2b34cd7 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/CallToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/CallToken.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.CallNode;
import com.jantuomi.tunkki.core.parser.tokenizer.token.Token;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DeclareAssignToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DeclareAssignToken.java
index dc55896..5821dd3 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DeclareAssignToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DeclareAssignToken.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.DeclareAssignNode;
import com.jantuomi.tunkki.core.parser.ast.SymbolNode;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.SyntaxTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 28.7.2016.
@@ -19,8 +20,7 @@ public class DeclareAssignToken extends BinaryOperatorToken {
ASTNode lhsNode = lhs.generateNode();
if (!(lhsNode instanceof SymbolNode)) {
- ExceptionManager.raise(TunkkiError.ExceptionType.SyntaxError, getLine(), "non-symbol " + toString());
- return null;
+ throw new SyntaxTunkkiError(getLine(), "non-symbol " + toString());
}
DeclareAssignNode node = new DeclareAssignNode(this,
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DivisionToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DivisionToken.java
index cd3100f..1c2d8f7 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DivisionToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/DivisionToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.DivisionNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 15.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/FunctionDefineToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/FunctionDefineToken.java
index ad7fa14..8050692 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/FunctionDefineToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/FunctionDefineToken.java
@@ -3,7 +3,8 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.BlockBodyNode;
import com.jantuomi.tunkki.core.parser.ast.FunctionDefineNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.ExpectedDifferentTokenTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.ArrayList;
import java.util.List;
@@ -21,7 +22,7 @@ public class FunctionDefineToken extends VarargOperatorToken {
FunctionDefineNode node = new FunctionDefineNode(this);
if (args.size() == 0) {
- throw new TunkkiError(TunkkiError.ExceptionType.ExpectedDifferentTokenError, getLine(), getText());
+ throw new ExpectedDifferentTokenTunkkiError(getLine(), getText());
}
node.setName(args.get(0).getText());
@@ -37,7 +38,7 @@ public class FunctionDefineToken extends VarargOperatorToken {
bodyNode = (BlockBodyNode) args.get(args.size() - 1).generateNode();
}
catch (Exception ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.ExpectedDifferentTokenError, getLine(), getText());
+ throw new ExpectedDifferentTokenTunkkiError(getLine(), getText());
}
node.setBody(bodyNode);
return node;
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/MultiplicationToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/MultiplicationToken.java
index e8e3721..69c153f 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/MultiplicationToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/MultiplicationToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.MultiplicationNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 15.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/NegationToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/NegationToken.java
index a094f02..46098c1 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/NegationToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/NegationToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.NegationNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 21.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/StringLiteralToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/StringLiteralToken.java
index de916c2..aacb2e8 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/StringLiteralToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/StringLiteralToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.StringLiteralNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 21.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SubtractionToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SubtractionToken.java
index f5ff1b4..a94a46a 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SubtractionToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SubtractionToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.SubtractionNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 16.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SymbolToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SymbolToken.java
index 613ebc5..bca3711 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SymbolToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/SymbolToken.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.SymbolNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 16.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/VariableDeclareToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/VariableDeclareToken.java
index 46c5b6a..a9d6160 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/VariableDeclareToken.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/VariableDeclareToken.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.parser.tokenizer.token.types;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.ast.SymbolNode;
import com.jantuomi.tunkki.core.parser.ast.VariableDeclareNode;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
/**
* Created by jan on 20.6.2016.
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Function.java b/src/main/com/jantuomi/tunkki/core/runtime/Function.java
index 7108fdc..b104dd0 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/Function.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/Function.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime;
import com.jantuomi.tunkki.core.parser.ast.BlockBodyNode;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java b/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java
index 7160b04..ef9a2c6 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime;
import com.jantuomi.tunkki.core.parser.ast.ASTNode;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
index 0565227..4bdd71b 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime;
import com.jantuomi.tunkki.core.parser.datatype.CallableDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/State.java b/src/main/com/jantuomi/tunkki/core/runtime/State.java
index 742e603..968f8c9 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/State.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/State.java
@@ -3,7 +3,7 @@ package com.jantuomi.tunkki.core.runtime;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.NadaDatatype;
import com.jantuomi.tunkki.core.runtime.builtins.BuiltinManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
index f139025..a039121 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
@@ -5,7 +5,8 @@ import com.jantuomi.tunkki.core.runtime.builtins.globals.*;
import com.jantuomi.tunkki.core.runtime.builtins.globals.cast.AsBooleanBuiltinFunction;
import com.jantuomi.tunkki.core.runtime.builtins.globals.cast.AsIntBuiltinFunction;
import com.jantuomi.tunkki.core.runtime.builtins.math.PowerBuiltinFunction;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.IncludeTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.*;
@@ -53,7 +54,7 @@ public class BuiltinManager {
return getFunctionsFromMathModule();
}
else {
- throw new TunkkiError(TunkkiError.ExceptionType.IncludeError, -1, name);
+ throw new IncludeTunkkiError(-1, name);
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/BuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/BuiltinFunction.java
index 96c9ebe..8cb8c41 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/BuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/BuiltinFunction.java
@@ -2,8 +2,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.runtime.Function;
-import com.jantuomi.tunkki.core.runtime.builtins.BuiltinManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ConcatBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ConcatBuiltinFunction.java
index 30becdc..677ed32 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ConcatBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ConcatBuiltinFunction.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.StringDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
index ef67921..c6eb589 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.ListDatatype;
import com.jantuomi.tunkki.core.parser.datatype.StringDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.FunctionArgumentTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -20,7 +21,7 @@ public class ContainsBuiltinFunction extends BuiltinFunction {
@Override
public Datatype evaluate(List<Datatype> params) throws TunkkiError {
if (params.size() != 2) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
if (params.get(0).getType() == Datatype.Type.List) {
@@ -29,7 +30,7 @@ public class ContainsBuiltinFunction extends BuiltinFunction {
else if (params.get(0).getType() == Datatype.Type.String) {
return evaluateOnString(params);
}
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
private Datatype evaluateOnList(List<Datatype> params) throws TunkkiError {
@@ -46,7 +47,7 @@ public class ContainsBuiltinFunction extends BuiltinFunction {
private Datatype evaluateOnString(List<Datatype> params) throws TunkkiError {
if (params.get(1).getType() != Datatype.Type.String) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
StringDatatype string = (StringDatatype) params.get(0);
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/EqualsBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/EqualsBuiltinFunction.java
index b9a62cb..1d5ca64 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/EqualsBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/EqualsBuiltinFunction.java
@@ -2,7 +2,9 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.FunctionArgumentTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TypeTunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -18,7 +20,7 @@ public class EqualsBuiltinFunction extends BuiltinFunction {
@Override
public Datatype evaluate(List<Datatype> params) throws TunkkiError {
if (params.size() != 2) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
Datatype lhs = params.get(0);
@@ -28,7 +30,7 @@ public class EqualsBuiltinFunction extends BuiltinFunction {
if (isEqual != null) {
return isEqual;
} else {
- throw new TunkkiError(TunkkiError.ExceptionType.TypeError, -1, lhs.getType().toString(), rhs.getType().toString());
+ throw new TypeTunkkiError(-1, lhs.getType().toString(), rhs.getType().toString());
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/GetBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/GetBuiltinFunction.java
index 2dd388d..a7bf925 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/GetBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/GetBuiltinFunction.java
@@ -3,7 +3,9 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype;
import com.jantuomi.tunkki.core.parser.datatype.ListDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.FunctionArgumentTunkkiError;
+import com.jantuomi.tunkki.exception.types.GeneralTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -19,15 +21,15 @@ public class GetBuiltinFunction extends BuiltinFunction {
@Override
public Datatype evaluate(List<Datatype> params) throws TunkkiError {
if (params.size() != 2) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), params.toString());
+ throw new FunctionArgumentTunkkiError(-1, getName(), params.toString());
}
if (params.get(0).getType() != Datatype.Type.List) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
if (params.get(1).getType() != Datatype.Type.Integer) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
ListDatatype list = (ListDatatype) params.get(0);
@@ -37,7 +39,7 @@ public class GetBuiltinFunction extends BuiltinFunction {
return list.getData().get(index.getData());
}
catch (Exception ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.GeneralError, -1, "List index out of bounds.");
+ throw new GeneralTunkkiError(-1, "List index out of bounds.");
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/IncludeBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/IncludeBuiltinFunction.java
index 6c200e5..96a1a80 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/IncludeBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/IncludeBuiltinFunction.java
@@ -6,17 +6,16 @@ import com.jantuomi.tunkki.core.CommandLineArgumentContainer;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.StringDatatype;
import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype;
-import com.jantuomi.tunkki.core.runtime.Function;
import com.jantuomi.tunkki.core.runtime.State;
import com.jantuomi.tunkki.core.runtime.builtins.BuiltinManager;
import com.jantuomi.tunkki.exception.ExceptionManager;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.GeneralTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import java.util.stream.Collectors;
/**
* Created by jan on 28.6.2016.
@@ -33,13 +32,12 @@ public class IncludeBuiltinFunction extends BuiltinFunction {
if (params.size() == 1 && params.get(0).getType() == Datatype.Type.String) {
filename = ((StringDatatype) params.get(0)).getData();
} else {
- ExceptionManager.raise(TunkkiError.ExceptionType.GeneralError, -1, "Include argument must be a valid file name string.");
- return null;
+ throw new GeneralTunkkiError(-1, "Include argument must be a valid file name string.");
}
if (BuiltinManager.getInstance().BUILTIN_MODULES.contains(filename)) {
- BuiltinManager.getInstance().getFunctionsFromModule(filename).stream()
+ BuiltinManager.getInstance().getFunctionsFromModule(filename)
.forEach( f -> State.getInstance().addFunctionToScope(f.getName(), f) );
}
@@ -54,8 +52,7 @@ public class IncludeBuiltinFunction extends BuiltinFunction {
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(contents);
if (matcher.matches()) {
- ExceptionManager.raise(TunkkiError.ExceptionType.GeneralError, -1, "Recursive include detected, aborting.");
- return null;
+ throw new GeneralTunkkiError(-1, "Recursive include detected, aborting.");
}
Tunkki.getInstance().run(contents);
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java
index 40ce3ab..c5c8e56 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/InputBuiltinFunction.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.StringDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ListBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ListBuiltinFunction.java
index 3743bbd..60d9b50 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ListBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ListBuiltinFunction.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.ListDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/OutputBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/OutputBuiltinFunction.java
index e3b1e15..aa511ce 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/OutputBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/OutputBuiltinFunction.java
@@ -2,7 +2,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsBooleanBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsBooleanBuiltinFunction.java
index ed47b6e..632d25f 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsBooleanBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsBooleanBuiltinFunction.java
@@ -2,7 +2,8 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals.cast;
import com.jantuomi.tunkki.core.parser.datatype.*;
import com.jantuomi.tunkki.core.runtime.builtins.globals.BuiltinFunction;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.CastTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -35,7 +36,7 @@ public class AsBooleanBuiltinFunction extends BuiltinFunction {
case Boolean:
return new BooleanDatatype(((BooleanDatatype) param).getData());
default:
- throw new TunkkiError(TunkkiError.ExceptionType.CastError, -1, "Boolean", param.toString());
+ throw new CastTunkkiError(-1, "Boolean", param.toString());
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsIntBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsIntBuiltinFunction.java
index 55e542d..4bd13a0 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsIntBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/cast/AsIntBuiltinFunction.java
@@ -2,7 +2,8 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals.cast;
import com.jantuomi.tunkki.core.parser.datatype.*;
import com.jantuomi.tunkki.core.runtime.builtins.globals.BuiltinFunction;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.CastTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -35,7 +36,7 @@ public class AsIntBuiltinFunction extends BuiltinFunction {
i = Integer.parseInt(((StringDatatype) param).getData());
}
catch (NumberFormatException ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.CastError, -1, "Integer", ((StringDatatype) param).getData());
+ throw new CastTunkkiError(-1, "Integer", ((StringDatatype) param).getData());
}
return new IntegerDatatype(i);
case Integer:
@@ -45,7 +46,7 @@ public class AsIntBuiltinFunction extends BuiltinFunction {
case Double:
return new IntegerDatatype((int) Math.round(((DoubleDatatype) param).getData()));
default:
- throw new TunkkiError(TunkkiError.ExceptionType.CastError, -1, "Integer", param.toString());
+ throw new CastTunkkiError(-1, "Integer", param.toString());
}
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/math/PowerBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/math/PowerBuiltinFunction.java
index 9c4db2b..ffd81f8 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/math/PowerBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/math/PowerBuiltinFunction.java
@@ -4,7 +4,8 @@ import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.DoubleDatatype;
import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype;
import com.jantuomi.tunkki.core.runtime.builtins.globals.BuiltinFunction;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.FunctionArgumentTunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import java.util.Arrays;
import java.util.List;
@@ -20,7 +21,7 @@ public class PowerBuiltinFunction extends BuiltinFunction {
@Override
public Datatype evaluate(List<Datatype> params) throws TunkkiError {
if (params.size() != 2) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
Datatype lhs = params.get(0);
@@ -34,7 +35,7 @@ public class PowerBuiltinFunction extends BuiltinFunction {
return new DoubleDatatype(result);
}
catch (Exception ex) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
}
@@ -46,7 +47,7 @@ public class PowerBuiltinFunction extends BuiltinFunction {
number = ((DoubleDatatype) dt).getData();
}
else {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ throw new FunctionArgumentTunkkiError(-1, getName(), Datatype.toString(params));
}
return number;
}
diff --git a/src/main/com/jantuomi/tunkki/exception/ExceptionManager.java b/src/main/com/jantuomi/tunkki/exception/ExceptionManager.java
index 9cfdd2e..b26c3b0 100644
--- a/src/main/com/jantuomi/tunkki/exception/ExceptionManager.java
+++ b/src/main/com/jantuomi/tunkki/exception/ExceptionManager.java
@@ -1,5 +1,7 @@
package com.jantuomi.tunkki.exception;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
+
/**
* Created by jan on 10.6.2016.
*/
@@ -13,9 +15,4 @@ public class ExceptionManager {
public static ExceptionManager getInstance() {
return instance;
}
-
- public static void raise(TunkkiError.ExceptionType ex, int line, String... args) throws TunkkiError {
- TunkkiError e = new TunkkiError(ex, line, args);
- throw e;
- }
}
diff --git a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java b/src/main/com/jantuomi/tunkki/exception/TunkkiError.java
deleted file mode 100644
index b5a36a7..0000000
--- a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.jantuomi.tunkki.exception;
-
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by jan on 12.6.2016.
- */
-public class TunkkiError extends Exception {
-
- public enum ExceptionType {
- IllegalTokenError,
- SyntaxError,
- TypeError,
- FunctionArgumentError,
- ExpectedDifferentTokenError,
- UndeclaredSymbolError,
- IncludeError,
- GeneralError,
- CastError,
- DivisionByZeroError,
- NadaError
- }
-
- private 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.ExpectedDifferentTokenError, "Token '%s' expects a different token stack.");
- errorTexts.put(ExceptionType.FunctionArgumentError, "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 in the current scope.");
- errorTexts.put(ExceptionType.IncludeError, "File or module %s could not be included.");
- errorTexts.put(ExceptionType.GeneralError, "%s");
- errorTexts.put(ExceptionType.NadaError, "Can't do operation with a nada value.");
- errorTexts.put(ExceptionType.CastError, "Illegal cast to type %s from value %s.");
- errorTexts.put(ExceptionType.DivisionByZeroError, "Division by zero.");
- }
-
- private ExceptionType exceptionType;
- private String completeMessage;
- private List<String> arguments;
-
- public TunkkiError(ExceptionType exceptionType, int line, String... args) {
- super(exceptionType.toString(), null, false, false);
- this.exceptionType = exceptionType;
- this.arguments = Arrays.asList(args);
- this.completeMessage = formatMessage(exceptionType.toString() + ": " + what(exceptionType), line, args);
- }
-
- private static String formatMessage(String message, int line, String... parameters) {
-
- message = String.format(message, parameters);
- if (line == -1) {
- return "\n" + message;
- } else {
- 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);
- }
-
- public ExceptionType getType() {
- return exceptionType;
- }
-
- public List<String> getArguments() {
- return this.arguments;
- }
-}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/CastTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/CastTunkkiError.java
new file mode 100644
index 0000000..f5312d8
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/CastTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class CastTunkkiError extends TunkkiError {
+ public CastTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Illegal cast to type %s from value %s.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.CastError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/DivisionByZeroTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/DivisionByZeroTunkkiError.java
new file mode 100644
index 0000000..0fb0767
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/DivisionByZeroTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class DivisionByZeroTunkkiError extends TunkkiError {
+ public DivisionByZeroTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Division by zero.";
+ }
+
+ @Override
+ public ExceptionType getType() {
+ return ExceptionType.DivisionByZeroError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/ExpectedDifferentTokenTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/ExpectedDifferentTokenTunkkiError.java
new file mode 100644
index 0000000..c56a011
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/ExpectedDifferentTokenTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class ExpectedDifferentTokenTunkkiError extends TunkkiError {
+ public ExpectedDifferentTokenTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Token '%s' expects a different token stack.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.ExpectedDifferentTokenError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/FunctionArgumentTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/FunctionArgumentTunkkiError.java
new file mode 100644
index 0000000..1b61c86
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/FunctionArgumentTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class FunctionArgumentTunkkiError extends TunkkiError {
+ public FunctionArgumentTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "The parameter list given to function %s is either of wrong length or the parameters are of wrong type. Actual: %s";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.FunctionArgumentError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/GeneralTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/GeneralTunkkiError.java
new file mode 100644
index 0000000..b49c404
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/GeneralTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class GeneralTunkkiError extends TunkkiError {
+ public GeneralTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "%s";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.GeneralError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/IllegalTokenTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/IllegalTokenTunkkiError.java
new file mode 100644
index 0000000..dc19911
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/IllegalTokenTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class IllegalTokenTunkkiError extends TunkkiError {
+ public IllegalTokenTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Unknown or illegal token %s found.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.IllegalTokenError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/IncludeTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/IncludeTunkkiError.java
new file mode 100644
index 0000000..db95110
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/IncludeTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class IncludeTunkkiError extends TunkkiError {
+ public IncludeTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "File or module %s could not be included.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.IncludeError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/NadaTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/NadaTunkkiError.java
new file mode 100644
index 0000000..2edc13b
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/NadaTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class NadaTunkkiError extends TunkkiError {
+ public NadaTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Can't do operation with a nada value.";
+ }
+
+ @Override
+ public ExceptionType getType() {
+ return ExceptionType.NadaError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/SyntaxTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/SyntaxTunkkiError.java
new file mode 100644
index 0000000..08d230b
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/SyntaxTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class SyntaxTunkkiError extends TunkkiError {
+ public SyntaxTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Unexpected %s.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.SyntaxError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/TunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/TunkkiError.java
new file mode 100644
index 0000000..0124d37
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/TunkkiError.java
@@ -0,0 +1,72 @@
+package com.jantuomi.tunkki.exception.types;
+
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by jan on 12.6.2016.
+ */
+abstract public class TunkkiError extends Exception {
+
+ public enum ExceptionType {
+ IllegalTokenError,
+ SyntaxError,
+ TypeError,
+ FunctionArgumentError,
+ ExpectedDifferentTokenError,
+ UndeclaredSymbolError,
+ IncludeError,
+ GeneralError,
+ CastError,
+ DivisionByZeroError,
+ NadaError
+ }
+
+ private static Map<ExceptionType, String> errorTexts = new HashMap<>();
+
+
+ private List<String> arguments;
+ private int line;
+ private String[] args;
+
+ public TunkkiError(int line, String... args) {
+ super();
+ this.arguments = Arrays.asList(args);
+ this.line = line;
+ this.args = args;
+ }
+
+ private static String formatMessage(String message, int line, String... parameters) {
+
+ message = String.format(message, parameters);
+ if (line == -1) {
+ return "\n" + message;
+ } else {
+ return String.format("\nLine #%d: ", line) + message;
+ }
+ }
+
+ abstract public String what();
+
+ abstract ExceptionType getType();
+
+ public void setLine(int line) {
+ this.line = line;
+ }
+
+ protected String completeMessage() {
+ return formatMessage(getType().toString() + ": " + what(), line, args);
+ }
+
+ @Override
+ public void printStackTrace() {
+ System.err.println(completeMessage());
+ }
+
+ public List<String> getArguments() {
+ return this.arguments;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/TypeTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/TypeTunkkiError.java
new file mode 100644
index 0000000..a90483c
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/TypeTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class TypeTunkkiError extends TunkkiError {
+ public TypeTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "Incompatible types %s and %s.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.TypeError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/exception/types/UndeclaredSymbolTunkkiError.java b/src/main/com/jantuomi/tunkki/exception/types/UndeclaredSymbolTunkkiError.java
new file mode 100644
index 0000000..5b50ca8
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/exception/types/UndeclaredSymbolTunkkiError.java
@@ -0,0 +1,20 @@
+package com.jantuomi.tunkki.exception.types;
+
+/**
+ * Created by jan on 2.8.2016.
+ */
+public class UndeclaredSymbolTunkkiError extends TunkkiError {
+ public UndeclaredSymbolTunkkiError(int line, String... args) {
+ super(line, args);
+ }
+
+ @Override
+ public String what() {
+ return "No symbol %s defined in the current scope.";
+ }
+
+ @Override
+ ExceptionType getType() {
+ return ExceptionType.UndeclaredSymbolError;
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/repl/Repl.java b/src/main/com/jantuomi/tunkki/repl/Repl.java
index 3b63b6e..aeb620b 100644
--- a/src/main/com/jantuomi/tunkki/repl/Repl.java
+++ b/src/main/com/jantuomi/tunkki/repl/Repl.java
@@ -1,8 +1,7 @@
package com.jantuomi.tunkki.repl;
import com.jantuomi.tunkki.Tunkki;
-import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype;
-import com.jantuomi.tunkki.exception.TunkkiError;
+import com.jantuomi.tunkki.exception.types.TunkkiError;
import jline.console.*;
import java.io.IOException;