diff options
| author | jantuomi <jans.tuomi@gmail.com> | 2016-07-29 15:44:20 +0300 |
|---|---|---|
| committer | jantuomi <jans.tuomi@gmail.com> | 2016-07-29 15:44:20 +0300 |
| commit | 6c6eabea8947a9ae83e6ba98112574c1a2f25a34 (patch) | |
| tree | be3cfedf93a630a85b0cf5afd9b09ea0735c3b12 /src/main/com | |
| parent | 316add83c73292b16e1c51feb66e30720208e20c (diff) | |
Add nada datatype, resolves #11
Diffstat (limited to 'src/main/com')
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; |
