diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-06-22 23:25:59 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-07-26 19:47:11 +0300 |
| commit | 48dcd488054024d98fe1e659a4029630130d1d35 (patch) | |
| tree | 2d4f91b74d469afb22738091ef74c16bf47ad13d /main/core/parser/ast/DivisionNode.java | |
| parent | fa02123ab00be8b8fe212c5d34ed021f1b63de74 (diff) | |
Add multiplication and division operations
Diffstat (limited to 'main/core/parser/ast/DivisionNode.java')
| -rw-r--r-- | main/core/parser/ast/DivisionNode.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/main/core/parser/ast/DivisionNode.java b/main/core/parser/ast/DivisionNode.java new file mode 100644 index 0000000..5bebf7b --- /dev/null +++ b/main/core/parser/ast/DivisionNode.java @@ -0,0 +1,39 @@ +package com.jantuomi.interpreter.main.core.parser.ast; + +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; +import com.jantuomi.interpreter.main.exception.ExceptionManager; +import com.jantuomi.interpreter.main.exception.InterpreterException; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 16.6.2016. + */ +public class DivisionNode extends BinaryOperatorNode { + + public DivisionNode(Token token, ASTNode lhs, ASTNode rhs) { + super(token, lhs, rhs); + } + + @Override + public DataContainer evaluate() throws InterpreterException { + DataContainer operand1 = lhs.evaluate(); + DataContainer operand2 = rhs.evaluate(); + + DataContainer result = operand1.divide(operand2); + if (result != null) { + return result; + } else { + ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, source.getLine(), + operand1.getType().toString(), operand2.getType().toString()); + return null; + } + + } + @Override + List<ASTNode> getChildren() { + return Arrays.asList(lhs, rhs); + } +} |
