From 316add83c73292b16e1c51feb66e30720208e20c Mon Sep 17 00:00:00 2001 From: jantuomi Date: Fri, 29 Jul 2016 15:18:35 +0300 Subject: Rename DataContainer to Datatype --- .../jantuomi/tunkki/core/parser/ast/ASTNode.java | 4 +- .../tunkki/core/parser/ast/AdditionNode.java | 10 +-- .../tunkki/core/parser/ast/AssignmentNode.java | 6 +- .../tunkki/core/parser/ast/BlockBodyNode.java | 8 +- .../tunkki/core/parser/ast/BooleanLiteralNode.java | 10 +-- .../tunkki/core/parser/ast/BranchNode.java | 14 ++-- .../tunkki/core/parser/ast/DeclareAssignNode.java | 8 +- .../tunkki/core/parser/ast/DivisionNode.java | 10 +-- .../tunkki/core/parser/ast/DoubleLiteralNode.java | 10 +-- .../jantuomi/tunkki/core/parser/ast/EmptyNode.java | 8 +- .../tunkki/core/parser/ast/FunctionDefineNode.java | 8 +- .../tunkki/core/parser/ast/IntegerLiteralNode.java | 10 +-- .../tunkki/core/parser/ast/MultiplicationNode.java | 10 +-- .../tunkki/core/parser/ast/NegationNode.java | 20 ++--- .../tunkki/core/parser/ast/ParameterListNode.java | 4 +- .../tunkki/core/parser/ast/StringLiteralNode.java | 8 +- .../tunkki/core/parser/ast/SubtractionNode.java | 10 +-- .../tunkki/core/parser/ast/SymbolNode.java | 12 +-- .../core/parser/ast/VariableDeclareNode.java | 8 +- .../core/parser/datatype/BooleanDataContainer.java | 44 ----------- .../core/parser/datatype/BooleanDatatype.java | 44 +++++++++++ .../tunkki/core/parser/datatype/DataContainer.java | 50 ------------ .../tunkki/core/parser/datatype/Datatype.java | 49 ++++++++++++ .../core/parser/datatype/DoubleDataContainer.java | 86 -------------------- .../core/parser/datatype/DoubleDatatype.java | 86 ++++++++++++++++++++ .../core/parser/datatype/IntegerDataContainer.java | 91 ---------------------- .../core/parser/datatype/IntegerDatatype.java | 91 ++++++++++++++++++++++ .../core/parser/datatype/ListDataContainer.java | 54 ------------- .../tunkki/core/parser/datatype/ListDatatype.java | 53 +++++++++++++ .../core/parser/datatype/StringDataContainer.java | 46 ----------- .../core/parser/datatype/StringDatatype.java | 46 +++++++++++ .../core/parser/datatype/VoidDataContainer.java | 39 ---------- .../tunkki/core/parser/datatype/VoidDatatype.java | 39 ++++++++++ .../com/jantuomi/tunkki/core/runtime/Function.java | 6 +- .../jantuomi/tunkki/core/runtime/Interpreter.java | 4 +- .../com/jantuomi/tunkki/core/runtime/Scope.java | 10 +-- .../com/jantuomi/tunkki/core/runtime/State.java | 12 +-- .../runtime/builtins/AsIntBuiltinFunction.java | 26 +++---- .../core/runtime/builtins/BuiltinFunction.java | 4 +- .../runtime/builtins/ConcatBuiltinFunction.java | 10 +-- .../runtime/builtins/ContainsBuiltinFunction.java | 24 +++--- .../core/runtime/builtins/GetBuiltinFunction.java | 20 ++--- .../runtime/builtins/IncludeBuiltinFunction.java | 14 ++-- .../runtime/builtins/InputBuiltinFunction.java | 10 +-- .../core/runtime/builtins/ListBuiltinFunction.java | 9 +-- .../runtime/builtins/OutputBuiltinFunction.java | 10 +-- 46 files changed, 575 insertions(+), 580 deletions(-) delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/DataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/StringDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java delete mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDataContainer.java create mode 100644 src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java (limited to 'src') 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 4878105..a3b0f47 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/ASTNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.TunkkiError; @@ -11,7 +11,7 @@ import java.util.List; */ abstract public class ASTNode { - public abstract DataContainer evaluate() throws TunkkiError; + public abstract Datatype evaluate() throws TunkkiError; protected Token source; 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 69edec1..6d4e7ca 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/AdditionNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -18,11 +18,11 @@ public class AdditionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer operand1 = lhs.evaluate(); - DataContainer operand2 = rhs.evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype operand1 = lhs.evaluate(); + Datatype operand2 = rhs.evaluate(); - DataContainer result = operand1.add(operand2); + Datatype result = operand1.add(operand2); if (result != null) { return result; } else { 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 619fe31..0500ad3 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/AssignmentNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.runtime.State; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.TunkkiError; @@ -17,9 +17,9 @@ public class AssignmentNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { + public Datatype evaluate() throws TunkkiError { SymbolNode symbol = (SymbolNode) lhs; - DataContainer rValue = rhs.evaluate(); + Datatype rValue = rhs.evaluate(); State.getInstance().setSymbolValueToScope( symbol.getName(), rValue 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 2df3496..4899b8f 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/BlockBodyNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.VoidDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.TunkkiError; @@ -14,8 +14,8 @@ public class BlockBodyNode extends VarargOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer returnValue = new VoidDataContainer(); + public Datatype evaluate() throws TunkkiError { + Datatype returnValue = new VoidDatatype(); for (ASTNode node : args) { returnValue = node.evaluate(); diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/BooleanLiteralNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/BooleanLiteralNode.java index aaa1e95..d9d2c6a 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/BooleanLiteralNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/BooleanLiteralNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.Arrays; @@ -11,15 +11,15 @@ import java.util.List; * Created by jan on 16.6.2016. */ public class BooleanLiteralNode extends ASTNode { - private BooleanDataContainer value; + private BooleanDatatype value; public BooleanLiteralNode(Token token) { super(token); - value = new BooleanDataContainer(Boolean.parseBoolean(token.getText())); + value = new BooleanDatatype(Boolean.parseBoolean(token.getText())); } @Override - public DataContainer evaluate() { + public Datatype evaluate() { return value; } 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 c4a027a..51a5f45 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/BranchNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.TunkkiError; @@ -23,16 +23,16 @@ public class BranchNode extends ASTNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer ev = expression.evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype ev = expression.evaluate(); boolean returnValue = false; - if (ev instanceof BooleanDataContainer) { - returnValue = ((BooleanDataContainer) ev).getData(); + if (ev instanceof BooleanDatatype) { + returnValue = ((BooleanDatatype) ev).getData(); if (returnValue) { branch.evaluate(); } } - return new BooleanDataContainer(returnValue); + return new BooleanDatatype(returnValue); } @Override 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 6e951cb..ea882cf 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DeclareAssignNode.java @@ -1,11 +1,9 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.runtime.State; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.TunkkiError; -import com.sun.java_cup.internal.runtime.Symbol; import java.util.Arrays; import java.util.List; @@ -19,7 +17,7 @@ public class DeclareAssignNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { + public Datatype evaluate() throws TunkkiError { SymbolNode var; try { var = (SymbolNode) lhs; @@ -30,7 +28,7 @@ public class DeclareAssignNode extends BinaryOperatorNode { State.getInstance().addSymbolToScope(var.getName()); - DataContainer rValue = rhs.evaluate(); + Datatype rValue = rhs.evaluate(); State.getInstance().setSymbolValueToScope( var.getName(), rValue 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 c963c77..c1311c0 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DivisionNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -18,11 +18,11 @@ public class DivisionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer operand1 = lhs.evaluate(); - DataContainer operand2 = rhs.evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype operand1 = lhs.evaluate(); + Datatype operand2 = rhs.evaluate(); - DataContainer result = operand1.divide(operand2); + Datatype result = operand1.divide(operand2); if (result != null) { return result; } else { diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/DoubleLiteralNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/DoubleLiteralNode.java index 361161d..1272519 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/DoubleLiteralNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/DoubleLiteralNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DoubleDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.DoubleDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.Arrays; @@ -11,15 +11,15 @@ import java.util.List; * Created by jan on 16.6.2016. */ public class DoubleLiteralNode extends ASTNode { - private DoubleDataContainer value; + private DoubleDatatype value; public DoubleLiteralNode(Token token) { super(token); - value = new DoubleDataContainer(Double.parseDouble(token.getText())); + value = new DoubleDatatype(Double.parseDouble(token.getText())); } @Override - public DataContainer evaluate() { + public Datatype evaluate() { return value; } diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/EmptyNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/EmptyNode.java index 943623f..136a0c3 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/EmptyNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/EmptyNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.VoidDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.Arrays; @@ -16,8 +16,8 @@ public class EmptyNode extends ASTNode { } @Override - public DataContainer evaluate() { - return new VoidDataContainer(); + public Datatype evaluate() { + return new VoidDatatype(); } @Override 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 d8d6aa2..7339970 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/FunctionDefineNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.core.runtime.Function; import com.jantuomi.tunkki.core.runtime.State; import com.jantuomi.tunkki.core.tokenizer.token.Token; @@ -32,7 +32,7 @@ public class FunctionDefineNode extends VarargOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { + public Datatype evaluate() throws TunkkiError { List argumentNames = new ArrayList<>(); try { for (ASTNode arg : args) { @@ -47,7 +47,7 @@ public class FunctionDefineNode extends VarargOperatorNode { function.setName(name); State.getInstance().addFunctionToScope(name, function); - return new StringDataContainer("function " + name); + return new StringDatatype("function " + name); } @Override diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/IntegerLiteralNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/IntegerLiteralNode.java index a0e0c13..f0a1a6d 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/IntegerLiteralNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/IntegerLiteralNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.IntegerDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.Arrays; @@ -11,15 +11,15 @@ import java.util.List; * Created by jan on 16.6.2016. */ public class IntegerLiteralNode extends ASTNode { - private IntegerDataContainer value; + private IntegerDatatype value; public IntegerLiteralNode(Token token) { super(token); - value = new IntegerDataContainer(Integer.parseInt(token.getText())); + value = new IntegerDatatype(Integer.parseInt(token.getText())); } @Override - public DataContainer evaluate() { + public Datatype evaluate() { return value; } 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 783bffd..a1e55d6 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/MultiplicationNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -18,11 +18,11 @@ public class MultiplicationNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer operand1 = lhs.evaluate(); - DataContainer operand2 = rhs.evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype operand1 = lhs.evaluate(); + Datatype operand2 = rhs.evaluate(); - DataContainer result = operand1.multiply(operand2); + Datatype result = operand1.multiply(operand2); if (result != null) { return result; } else { 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 a458ff3..7006975 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/NegationNode.java @@ -1,8 +1,8 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.IntegerDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -16,15 +16,15 @@ public class NegationNode extends UnaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer d = getOperand().evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype d = getOperand().evaluate(); - if (d instanceof BooleanDataContainer) { - return new BooleanDataContainer(!((BooleanDataContainer) d).getData()); + if (d instanceof BooleanDatatype) { + return new BooleanDatatype(!((BooleanDatatype) d).getData()); } - else if (d instanceof IntegerDataContainer) { - return new BooleanDataContainer( - ((IntegerDataContainer) d).getData() != 0 + else if (d instanceof IntegerDatatype) { + return new BooleanDatatype( + ((IntegerDatatype) d).getData() != 0 ); } ExceptionManager.raise(TunkkiError.ExceptionType.TypeError, source.getLine(), "not", d.toString()); diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/ParameterListNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/ParameterListNode.java index 42e95ea..fbc0992 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/ParameterListNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/ParameterListNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.ArrayList; @@ -26,7 +26,7 @@ public class ParameterListNode extends ASTNode { } @Override - public DataContainer evaluate() { + public Datatype evaluate() { // TODO use State to evaluate function return null; } diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/StringLiteralNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/StringLiteralNode.java index ffa008a..0976d93 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/StringLiteralNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/StringLiteralNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import java.util.Arrays; @@ -12,8 +12,8 @@ import java.util.List; */ public class StringLiteralNode extends ASTNode { @Override - public DataContainer evaluate() { - return new StringDataContainer(source.getText()); + public Datatype evaluate() { + return new StringDatatype(source.getText()); } public StringLiteralNode(Token source) { 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 90b06fc..56fd833 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/SubtractionNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -17,11 +17,11 @@ public class SubtractionNode extends BinaryOperatorNode { } @Override - public DataContainer evaluate() throws TunkkiError { - DataContainer operand1 = lhs.evaluate(); - DataContainer operand2 = rhs.evaluate(); + public Datatype evaluate() throws TunkkiError { + Datatype operand1 = lhs.evaluate(); + Datatype operand2 = rhs.evaluate(); - DataContainer result = operand1.subtract(operand2); + Datatype result = operand1.subtract(operand2); if (result != null) { return result; } else { 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 dc3a6e4..fde44c7 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/SymbolNode.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.runtime.State; import com.jantuomi.tunkki.core.tokenizer.token.Token; import com.jantuomi.tunkki.exception.ExceptionManager; @@ -41,16 +41,16 @@ public class SymbolNode extends ASTNode { } @Override - public DataContainer evaluate() throws TunkkiError { - List paramValues = new ArrayList<>(); + public Datatype evaluate() throws TunkkiError { + List paramValues = new ArrayList<>(); for (ASTNode param : parameters) { - DataContainer value = param.evaluate(); + Datatype value = param.evaluate(); if (value != null) { paramValues.add(value); } } - DataContainer returnValue; + Datatype returnValue; try { returnValue = State.getInstance().getSymbolValue(name, paramValues); } @@ -64,7 +64,7 @@ public class SymbolNode extends ASTNode { return returnValue; } else { ExceptionManager.raise(TunkkiError.ExceptionType.UndeclaredSymbolError, getLine(), name, - StringUtils.join(paramValues.stream().map(DataContainer::toString).collect(Collectors.toList()), ",")); + StringUtils.join(paramValues.stream().map(Datatype::toString).collect(Collectors.toList()), ",")); return null; } } diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/VariableDeclareNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/VariableDeclareNode.java index 9e2677f..07aa8e2 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/ast/VariableDeclareNode.java +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/VariableDeclareNode.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.parser.ast; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.core.runtime.State; import com.jantuomi.tunkki.core.tokenizer.token.Token; @@ -20,9 +20,9 @@ public class VariableDeclareNode extends ASTNode { } @Override - public DataContainer evaluate() { + public Datatype evaluate() { State.getInstance().addSymbolToScope(variable.getName()); - return new StringDataContainer(variable.getName()); + return new StringDatatype(variable.getName()); } @Override diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDataContainer.java deleted file mode 100644 index d1154e8..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDataContainer.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -/** - * Created by jan on 16.6.2016. - */ -public class BooleanDataContainer extends DataContainer { - - - public BooleanDataContainer(boolean value) { - setData(value); - } - - @Override - public Type getType() { - return Type.Boolean; - } - - @Override - public String toString() { - return Boolean.toString(getData()); - } - - @Override - public DataContainer add(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer subtract(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - return null; - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java new file mode 100644 index 0000000..9d8fc69 --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/BooleanDatatype.java @@ -0,0 +1,44 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +/** + * Created by jan on 16.6.2016. + */ +public class BooleanDatatype extends Datatype { + + + public BooleanDatatype(boolean value) { + setData(value); + } + + @Override + public Type getType() { + return Type.Boolean; + } + + @Override + public String toString() { + return Boolean.toString(getData()); + } + + @Override + public Datatype add(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype subtract(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + return null; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/DataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/DataContainer.java deleted file mode 100644 index 344d6c9..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/DataContainer.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -import javax.xml.crypto.Data; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Created by jan on 11.6.2016. - */ -abstract public class DataContainer { - - public enum Type { - List, - Integer, - Double, - String, - Boolean, - Void - } - - abstract public Type getType(); - - private T data; - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - - @Override - abstract public String toString(); - - abstract public DataContainer add(DataContainer other) throws TunkkiError; - public abstract DataContainer subtract(DataContainer other) throws TunkkiError; - public abstract DataContainer multiply(DataContainer other) throws TunkkiError; - public abstract DataContainer divide(DataContainer other) throws TunkkiError; - - public static String toString(List variables) { - String result = "["; - List strings = variables.stream().map(DataContainer::toString).collect(Collectors.toList()); - result += String.join(", ", strings); - result += "]"; - return result; - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java new file mode 100644 index 0000000..a8756cf --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/Datatype.java @@ -0,0 +1,49 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created by jan on 11.6.2016. + */ +abstract public class Datatype { + + public enum Type { + List, + Integer, + Double, + String, + Boolean, + Void + } + + abstract public Type getType(); + + private T data; + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + @Override + abstract public String toString(); + + abstract public Datatype add(Datatype other) throws TunkkiError; + public abstract Datatype subtract(Datatype other) throws TunkkiError; + public abstract Datatype multiply(Datatype other) throws TunkkiError; + public abstract Datatype divide(Datatype other) throws TunkkiError; + + public static String toString(List variables) { + String result = "["; + List strings = variables.stream().map(Datatype::toString).collect(Collectors.toList()); + result += String.join(", ", strings); + result += "]"; + return result; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDataContainer.java deleted file mode 100644 index 7bb3708..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDataContainer.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -/** - * Created by jan on 22.6.2016. - */ -public class DoubleDataContainer extends DataContainer { - public DoubleDataContainer(double value) { - setData(value); - } - - @Override - public Type getType() { - return Type.Double; - } - - @Override - public String toString() { - return getData().toString(); - } - - @Override - public DataContainer add(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Double: - return new DoubleDataContainer( - getData() + ((DoubleDataContainer) other).getData() - ); - case Integer: - return new DoubleDataContainer( - getData() + ((IntegerDataContainer) other).getData() - ); - default: - return null; - } - } - - @Override - public DataContainer subtract(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Double: - return new DoubleDataContainer( - getData() - ((DoubleDataContainer) other).getData() - ); - case Integer: - return new DoubleDataContainer( - getData() - ((IntegerDataContainer) other).getData() - ); - default: - return null; - } - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Double: - return new DoubleDataContainer( - getData() * ((DoubleDataContainer) other).getData() - ); - case Integer: - return new DoubleDataContainer( - getData() * ((IntegerDataContainer) other).getData() - ); - default: - return null; - } - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Double: - return new DoubleDataContainer( - getData() / ((DoubleDataContainer) other).getData() - ); - case Integer: - return new DoubleDataContainer( - getData() / ((IntegerDataContainer) other).getData() - ); - default: - return null; - } - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java new file mode 100644 index 0000000..38ec4ec --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/DoubleDatatype.java @@ -0,0 +1,86 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +/** + * Created by jan on 22.6.2016. + */ +public class DoubleDatatype extends Datatype { + public DoubleDatatype(double value) { + setData(value); + } + + @Override + public Type getType() { + return Type.Double; + } + + @Override + public String toString() { + return getData().toString(); + } + + @Override + public Datatype add(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Double: + return new DoubleDatatype( + getData() + ((DoubleDatatype) other).getData() + ); + case Integer: + return new DoubleDatatype( + getData() + ((IntegerDatatype) other).getData() + ); + default: + return null; + } + } + + @Override + public Datatype subtract(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Double: + return new DoubleDatatype( + getData() - ((DoubleDatatype) other).getData() + ); + case Integer: + return new DoubleDatatype( + getData() - ((IntegerDatatype) other).getData() + ); + default: + return null; + } + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Double: + return new DoubleDatatype( + getData() * ((DoubleDatatype) other).getData() + ); + case Integer: + return new DoubleDatatype( + getData() * ((IntegerDatatype) other).getData() + ); + default: + return null; + } + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Double: + return new DoubleDatatype( + getData() / ((DoubleDatatype) other).getData() + ); + case Integer: + return new DoubleDatatype( + getData() / ((IntegerDatatype) other).getData() + ); + default: + return null; + } + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDataContainer.java deleted file mode 100644 index a76c30a..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDataContainer.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -/** - * Created by jan on 16.6.2016. - */ -public class IntegerDataContainer extends DataContainer { - - public IntegerDataContainer(int value) { - setData(value); - } - - @Override - public Type getType() { - return Type.Integer; - } - - @Override - public String toString() { - return Integer.toString(getData()); - } - - @Override - public DataContainer add(DataContainer other) { - switch (other.getType()) { - case Integer: - return new IntegerDataContainer( - this.getData() + ((IntegerDataContainer) other).getData() - ); - case Double: - return new DoubleDataContainer( - (double) getData() + ((DoubleDataContainer) other).getData() - ); - default: - return null; - - } - } - - @Override - public DataContainer subtract(DataContainer other) { - switch (other.getType()) { - case Integer: - return new IntegerDataContainer( - this.getData() - ((IntegerDataContainer) other).getData() - ); - case Double: - return new DoubleDataContainer( - (double) getData() - ((DoubleDataContainer) other).getData() - ); - default: - return null; - - } - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Integer: - return new IntegerDataContainer( - this.getData() * ((IntegerDataContainer) other).getData() - ); - case Double: - return new DoubleDataContainer( - (double) getData() * ((DoubleDataContainer) other).getData() - ); - default: - return null; - - } - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case Integer: - return new IntegerDataContainer( - this.getData() / ((IntegerDataContainer) other).getData() - ); - case Double: - return new DoubleDataContainer( - (double) getData() / ((DoubleDataContainer) other).getData() - ); - default: - return null; - - } - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java new file mode 100644 index 0000000..8d91e3a --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/IntegerDatatype.java @@ -0,0 +1,91 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +/** + * Created by jan on 16.6.2016. + */ +public class IntegerDatatype extends Datatype { + + public IntegerDatatype(int value) { + setData(value); + } + + @Override + public Type getType() { + return Type.Integer; + } + + @Override + public String toString() { + return Integer.toString(getData()); + } + + @Override + public Datatype add(Datatype other) { + switch (other.getType()) { + case Integer: + return new IntegerDatatype( + this.getData() + ((IntegerDatatype) other).getData() + ); + case Double: + return new DoubleDatatype( + (double) getData() + ((DoubleDatatype) other).getData() + ); + default: + return null; + + } + } + + @Override + public Datatype subtract(Datatype other) { + switch (other.getType()) { + case Integer: + return new IntegerDatatype( + this.getData() - ((IntegerDatatype) other).getData() + ); + case Double: + return new DoubleDatatype( + (double) getData() - ((DoubleDatatype) other).getData() + ); + default: + return null; + + } + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Integer: + return new IntegerDatatype( + this.getData() * ((IntegerDatatype) other).getData() + ); + case Double: + return new DoubleDatatype( + (double) getData() * ((DoubleDatatype) other).getData() + ); + default: + return null; + + } + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + switch (other.getType()) { + case Integer: + return new IntegerDatatype( + this.getData() / ((IntegerDatatype) other).getData() + ); + case Double: + return new DoubleDatatype( + (double) getData() / ((DoubleDatatype) other).getData() + ); + default: + return null; + + } + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java deleted file mode 100644 index 1557350..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Created by jan on 27.7.2016. - */ -public class ListDataContainer extends DataContainer> { - - public ListDataContainer(List elements) { - setData(elements); - } - - @Override - public Type getType() { - return Type.List; - } - - @Override - public String toString() { - return DataContainer.toString(getData()); - } - - @Override - public DataContainer add(DataContainer other) throws TunkkiError { - switch (other.getType()) { - case List: - List newList = new ArrayList<>(); - newList.addAll(getData()); - newList.addAll(((ListDataContainer) other).getData()); - return new ListDataContainer(newList); - } - return null; - } - - @Override - public DataContainer subtract(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - return null; - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java new file mode 100644 index 0000000..2ff9b4a --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDatatype.java @@ -0,0 +1,53 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by jan on 27.7.2016. + */ +public class ListDatatype extends Datatype> { + + public ListDatatype(List elements) { + setData(elements); + } + + @Override + public Type getType() { + return Type.List; + } + + @Override + public String toString() { + return Datatype.toString(getData()); + } + + @Override + public Datatype add(Datatype other) throws TunkkiError { + switch (other.getType()) { + case List: + List newList = new ArrayList<>(); + newList.addAll(getData()); + newList.addAll(((ListDatatype) other).getData()); + return new ListDatatype(newList); + } + return null; + } + + @Override + public Datatype subtract(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + return null; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDataContainer.java deleted file mode 100644 index caba77c..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDataContainer.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -/** - * Created by jan on 16.6.2016. - */ -public class StringDataContainer extends DataContainer { - - - public StringDataContainer(String text) { - setData(text); - } - - @Override - public Type getType() { - return Type.String; - } - - @Override - public String toString() { - return String.format("\"%s\"", getData()); - } - - @Override - public DataContainer add(DataContainer other) { - return new StringDataContainer( - getData() + other.getData() - ); - } - - @Override - public DataContainer subtract(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - return null; - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java new file mode 100644 index 0000000..8a744a4 --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/StringDatatype.java @@ -0,0 +1,46 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +/** + * Created by jan on 16.6.2016. + */ +public class StringDatatype extends Datatype { + + + public StringDatatype(String text) { + setData(text); + } + + @Override + public Type getType() { + return Type.String; + } + + @Override + public String toString() { + return String.format("\"%s\"", getData()); + } + + @Override + public Datatype add(Datatype other) { + return new StringDatatype( + getData() + other.getData() + ); + } + + @Override + public Datatype subtract(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + return null; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDataContainer.java deleted file mode 100644 index 1924a55..0000000 --- a/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDataContainer.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.jantuomi.tunkki.core.parser.datatype; - -import com.jantuomi.tunkki.exception.TunkkiError; - -/** - * Created by jan on 17.6.2016. - */ -public class VoidDataContainer extends DataContainer { - - @Override - public Type getType() { - return Type.Void; - } - - @Override - public String toString() { - return ""; - } - - @Override - public DataContainer add(DataContainer other) { - return null; - } - - @Override - public DataContainer subtract(DataContainer other) { - return null; - } - - @Override - public DataContainer multiply(DataContainer other) throws TunkkiError { - return null; - } - - @Override - public DataContainer divide(DataContainer other) throws TunkkiError { - return null; - } -} diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java new file mode 100644 index 0000000..4a25c64 --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/VoidDatatype.java @@ -0,0 +1,39 @@ +package com.jantuomi.tunkki.core.parser.datatype; + +import com.jantuomi.tunkki.exception.TunkkiError; + +/** + * Created by jan on 17.6.2016. + */ +public class VoidDatatype extends Datatype { + + @Override + public Type getType() { + return Type.Void; + } + + @Override + public String toString() { + return ""; + } + + @Override + public Datatype add(Datatype other) { + return null; + } + + @Override + public Datatype subtract(Datatype other) { + return null; + } + + @Override + public Datatype multiply(Datatype other) throws TunkkiError { + return null; + } + + @Override + public Datatype divide(Datatype other) throws TunkkiError { + return null; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Function.java b/src/main/com/jantuomi/tunkki/core/runtime/Function.java index d9178ae..7108fdc 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/Function.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/Function.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.runtime; import com.jantuomi.tunkki.core.parser.ast.BlockBodyNode; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.List; @@ -30,7 +30,7 @@ public class Function { this.body = body; } - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { State.getInstance().createScope(); if (params.size() != argumentNames.size()) { @@ -42,7 +42,7 @@ public class Function { State.getInstance().setSymbolValueToScope(argumentNames.get(i), params.get(i)); } - DataContainer returnValue = body.evaluate(); + Datatype returnValue = body.evaluate(); State.getInstance().popScope(); diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java b/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java index 5d09862..5674dab 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/Interpreter.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.runtime; import com.jantuomi.tunkki.core.parser.ast.ASTNode; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.List; @@ -22,7 +22,7 @@ public class Interpreter { public static String execute(List sequence) throws TunkkiError { String output = ""; for (ASTNode node : sequence) { - DataContainer data = node.evaluate(); + Datatype data = node.evaluate(); if (data != null) { output = data.toString(); diff --git a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java index 88e9057..2f7e3a8 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/Scope.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/Scope.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.runtime; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.HashMap; @@ -13,20 +13,20 @@ import java.util.Map; public class Scope { private Scope parent = null; - private Map variables = new HashMap<>(); + private Map variables = new HashMap<>(); private Map functions = new HashMap<>(); public void addVariable(String symbol) { variables.put(symbol, null); } - public void setVariableValue(String symbol, DataContainer value) { + public void setVariableValue(String symbol, Datatype value) { variables.replace(symbol, value); } - public DataContainer resolveSymbol(String symbol, List params) throws TunkkiError { + public Datatype resolveSymbol(String symbol, List params) throws TunkkiError { if (functions.containsKey(symbol)) { - DataContainer r = functions.get(symbol).evaluate(params); + Datatype r = functions.get(symbol).evaluate(params); return r; } if (variables.containsKey(symbol)) { diff --git a/src/main/com/jantuomi/tunkki/core/runtime/State.java b/src/main/com/jantuomi/tunkki/core/runtime/State.java index 67631bc..a7e8e99 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/State.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/State.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.runtime; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.runtime.builtins.BuiltinManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -32,16 +32,16 @@ public class State { } - private DataContainer resolveSymbol(String symbol) throws TunkkiError { + private Datatype resolveSymbol(String symbol) throws TunkkiError { return scopes.peek().resolveSymbol(symbol, Arrays.asList()); } - public DataContainer getSymbolValue(String symbol) throws TunkkiError { - DataContainer d = resolveSymbol(symbol); + public Datatype getSymbolValue(String symbol) throws TunkkiError { + Datatype d = resolveSymbol(symbol); return d; } - public DataContainer getSymbolValue(String symbol, List parameters) throws TunkkiError { + public Datatype getSymbolValue(String symbol, List parameters) throws TunkkiError { return scopes.peek().resolveSymbol(symbol, parameters); } @@ -64,7 +64,7 @@ public class State { scopes.peek().addFunction(symbol, func); } - public void setSymbolValueToScope(String symbol, DataContainer value) { + public void setSymbolValueToScope(String symbol, Datatype value) { scopes.peek().setVariableValue(symbol, value); } diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/AsIntBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/AsIntBuiltinFunction.java index f6b19a1..2c18e11 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/AsIntBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/AsIntBuiltinFunction.java @@ -1,9 +1,9 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.IntegerDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.IntegerDatatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.Arrays; @@ -25,26 +25,26 @@ public class AsIntBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { if (params.size() != 1) { return null; } - DataContainer param = params.get(0); + Datatype param = params.get(0); int i = 0; - if (param instanceof StringDataContainer) { + if (param instanceof StringDatatype) { try { - i = Integer.parseInt(((StringDataContainer) param).getData()); + i = Integer.parseInt(((StringDatatype) param).getData()); } catch (NumberFormatException ex) { return null; } } - else if (param instanceof IntegerDataContainer) { - i = ((IntegerDataContainer) param).getData(); + else if (param instanceof IntegerDatatype) { + i = ((IntegerDatatype) param).getData(); } - else if (param instanceof BooleanDataContainer) { - i = ((BooleanDataContainer) param).getData() ? 1 : 0; + else if (param instanceof BooleanDatatype) { + i = ((BooleanDatatype) param).getData() ? 1 : 0; } - return new IntegerDataContainer(i); + return new IntegerDatatype(i); } } diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinFunction.java index af72ae0..af02f5f 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinFunction.java @@ -1,6 +1,6 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; import com.jantuomi.tunkki.core.runtime.Function; import com.jantuomi.tunkki.exception.TunkkiError; @@ -16,7 +16,7 @@ abstract public class BuiltinFunction extends Function{ } @Override - abstract public DataContainer evaluate(List params) throws TunkkiError; + abstract public Datatype evaluate(List params) throws TunkkiError; @Override abstract public String getName(); diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ConcatBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ConcatBuiltinFunction.java index c967df4..8e3ca68 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ConcatBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ConcatBuiltinFunction.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.Arrays; @@ -23,13 +23,13 @@ public class ConcatBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { StringBuilder sb = new StringBuilder(); - for (DataContainer d : params) { + for (Datatype d : params) { sb.append(d.getData()); } - return new StringDataContainer( + return new StringDatatype( sb.toString() ); } diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java index 4c531f7..2be4780 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java @@ -1,8 +1,8 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.ListDataContainer; +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.exception.TunkkiError; import java.util.Arrays; @@ -17,24 +17,24 @@ public class ContainsBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { if (params.size() != 2) { - throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), DataContainer.toString(params)); + throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params)); } - if (params.get(0).getType() != DataContainer.Type.List) { - throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), DataContainer.toString(params)); + if (params.get(0).getType() != Datatype.Type.List) { + throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params)); } - ListDataContainer list = (ListDataContainer) params.get(0); - DataContainer comp = params.get(1); + ListDatatype list = (ListDatatype) params.get(0); + Datatype comp = params.get(1); - for (DataContainer elem : list.getData()) { + for (Datatype elem : list.getData()) { if (elem.equals(comp)) { - return new BooleanDataContainer(true); + return new BooleanDatatype(true); } } - return new BooleanDataContainer(false); + return new BooleanDatatype(false); } @Override diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/GetBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/GetBuiltinFunction.java index 59698bc..117ada2 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/GetBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/GetBuiltinFunction.java @@ -1,8 +1,8 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.IntegerDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.ListDataContainer; +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 java.util.Arrays; @@ -17,21 +17,21 @@ public class GetBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { if (params.size() != 2) { throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), params.toString()); } - if (params.get(0).getType() != DataContainer.Type.List) { - throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), DataContainer.toString(params)); + if (params.get(0).getType() != Datatype.Type.List) { + throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params)); } - if (params.get(1).getType() != DataContainer.Type.Integer) { - throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), DataContainer.toString(params)); + if (params.get(1).getType() != Datatype.Type.Integer) { + throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params)); } - ListDataContainer list = (ListDataContainer) params.get(0); - IntegerDataContainer index = (IntegerDataContainer) params.get(1); + ListDatatype list = (ListDatatype) params.get(0); + IntegerDatatype index = (IntegerDatatype) params.get(1); try { return list.getData().get(index.getData()); diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/IncludeBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/IncludeBuiltinFunction.java index 5f63996..e6288ed 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/IncludeBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/IncludeBuiltinFunction.java @@ -3,9 +3,9 @@ package com.jantuomi.tunkki.core.runtime.builtins; import com.jantuomi.tunkki.Main; import com.jantuomi.tunkki.core.CommandLineArgumentContainer; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; -import com.jantuomi.tunkki.core.parser.datatype.VoidDataContainer; +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.exception.ExceptionManager; import com.jantuomi.tunkki.exception.TunkkiError; @@ -24,10 +24,10 @@ public class IncludeBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { String filename; - if (params.size() == 1 && params.get(0).getType() == DataContainer.Type.String) { - filename = ((StringDataContainer) params.get(0)).getData(); + 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; @@ -48,7 +48,7 @@ public class IncludeBuiltinFunction extends BuiltinFunction { } Main.run(contents); - return new VoidDataContainer(); + return new VoidDatatype(); } @Override diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/InputBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/InputBuiltinFunction.java index 13a0f53..3c10566 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/InputBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/InputBuiltinFunction.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.StringDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.StringDatatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.Arrays; @@ -24,13 +24,13 @@ public class InputBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { + public Datatype evaluate(List params) throws TunkkiError { if (params.size() > 0) { - DataContainer param = params.get(0); + Datatype param = params.get(0); System.out.print(param.getData().toString()); } Scanner in = new Scanner(System.in); String userInput = in.nextLine(); - return new StringDataContainer(userInput); + return new StringDatatype(userInput); } } diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java index e09f809..a524d60 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java @@ -1,10 +1,9 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.ListDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.ListDatatype; import com.jantuomi.tunkki.exception.TunkkiError; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -17,8 +16,8 @@ public class ListBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { - ListDataContainer data = new ListDataContainer(params); + public Datatype evaluate(List params) throws TunkkiError { + ListDatatype data = new ListDatatype(params); return data; } diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/OutputBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/OutputBuiltinFunction.java index 5816ce7..ea86d48 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/OutputBuiltinFunction.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/OutputBuiltinFunction.java @@ -1,7 +1,7 @@ package com.jantuomi.tunkki.core.runtime.builtins; -import com.jantuomi.tunkki.core.parser.datatype.DataContainer; -import com.jantuomi.tunkki.core.parser.datatype.VoidDataContainer; +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.datatype.VoidDatatype; import com.jantuomi.tunkki.exception.TunkkiError; import java.util.Arrays; @@ -23,9 +23,9 @@ public class OutputBuiltinFunction extends BuiltinFunction { } @Override - public DataContainer evaluate(List params) throws TunkkiError { - DataContainer param = params.get(0); + public Datatype evaluate(List params) throws TunkkiError { + Datatype param = params.get(0); System.out.println(param.getData().toString()); - return new VoidDataContainer(); + return new VoidDatatype(); } } -- cgit v1.3