aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorjantuomi <jans.tuomi@gmail.com>2016-07-29 15:44:20 +0300
committerjantuomi <jans.tuomi@gmail.com>2016-07-29 15:44:20 +0300
commit6c6eabea8947a9ae83e6ba98112574c1a2f25a34 (patch)
treebe3cfedf93a630a85b0cf5afd9b09ea0735c3b12 /src/main
parent316add83c73292b16e1c51feb66e30720208e20c (diff)
Add nada datatype, resolves #11
Diffstat (limited to 'src/main')
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java2
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java46
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/State.java6
-rw-r--r--src/main/com/jantuomi/tunkki/exception/TunkkiError.java4
4 files changed, 55 insertions, 3 deletions
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 a8756cf..a161f09 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java
@@ -16,7 +16,7 @@ abstract public class Datatype<T> {
Double,
String,
Boolean,
- Void
+ Nada, Void
}
abstract public Type getType();
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java
new file mode 100644
index 0000000..e2827f8
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java
@@ -0,0 +1,46 @@
+package com.jantuomi.tunkki.core.parser.datatype;
+
+import com.jantuomi.tunkki.exception.TunkkiError;
+
+/**
+ * Created by jan on 29.7.2016.
+ */
+public class NadaDatatype extends Datatype<Integer> {
+ @Override
+ public Type getType() {
+ return Type.Nada;
+ }
+
+ @Override
+ public String toString() {
+ return "nada";
+ }
+
+ @Override
+ public Datatype<Integer> add(Datatype<Integer> other) throws TunkkiError {
+ doOperation();
+ return null;
+ }
+
+ @Override
+ public Datatype<Integer> subtract(Datatype<Integer> other) throws TunkkiError {
+ doOperation();
+ return null;
+ }
+
+ @Override
+ public Datatype<Integer> multiply(Datatype<Integer> other) throws TunkkiError {
+ doOperation();
+ return null;
+ }
+
+ @Override
+ public Datatype<Integer> divide(Datatype<Integer> other) throws TunkkiError {
+ doOperation();
+ return null;
+ }
+
+ private void doOperation() throws TunkkiError {
+ throw new TunkkiError(TunkkiError.ExceptionType.NadaError, -1);
+ }
+}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/State.java b/src/main/com/jantuomi/tunkki/core/runtime/State.java
index a7e8e99..1b25712 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/State.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/State.java
@@ -1,6 +1,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;
@@ -28,8 +29,11 @@ public class State {
globalScope.addFunction(builtin.getName(), builtin);
}
- scopes.push(globalScope);
+ /* Add nada to the scope */
+ globalScope.addVariable("nada");
+ globalScope.setVariableValue("nada", new NadaDatatype());
+ scopes.push(globalScope);
}
private Datatype resolveSymbol(String symbol) throws TunkkiError {
diff --git a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java b/src/main/com/jantuomi/tunkki/exception/TunkkiError.java
index 24431ba..9e0163c 100644
--- a/src/main/com/jantuomi/tunkki/exception/TunkkiError.java
+++ b/src/main/com/jantuomi/tunkki/exception/TunkkiError.java
@@ -19,7 +19,8 @@ public class TunkkiError extends Exception {
ExpectedDifferentTokenError,
UndeclaredSymbolError,
IncludeError,
- GeneralError
+ GeneralError,
+ NadaError
}
private static Map<ExceptionType, String> errorTexts = new HashMap<>();
@@ -33,6 +34,7 @@ public class TunkkiError extends Exception {
errorTexts.put(ExceptionType.UndeclaredSymbolError, "No symbol %s defined, parameters: [%s].");
errorTexts.put(ExceptionType.IncludeError, "File %s could not be included.");
errorTexts.put(ExceptionType.GeneralError, "%s");
+ errorTexts.put(ExceptionType.NadaError, "Can't do operation with a nada value.");
}
private ExceptionType exceptionType;