diff options
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; |
