From 6c6eabea8947a9ae83e6ba98112574c1a2f25a34 Mon Sep 17 00:00:00 2001 From: jantuomi Date: Fri, 29 Jul 2016 15:44:20 +0300 Subject: Add nada datatype, resolves #11 --- .../tunkki/core/parser/datatype/Datatype.java | 2 +- .../tunkki/core/parser/datatype/NadaDatatype.java | 46 ++++++++++++++++++++++ .../com/jantuomi/tunkki/core/runtime/State.java | 6 ++- .../com/jantuomi/tunkki/exception/TunkkiError.java | 4 +- 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/NadaDatatype.java (limited to 'src') 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 { 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 { + @Override + public Type getType() { + return Type.Nada; + } + + @Override + public String toString() { + return "nada"; + } + + @Override + public Datatype add(Datatype other) throws TunkkiError { + doOperation(); + return null; + } + + @Override + public Datatype subtract(Datatype other) throws TunkkiError { + doOperation(); + return null; + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + doOperation(); + return null; + } + + @Override + public Datatype divide(Datatype 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 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; -- cgit v1.3