diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-06-21 20:57:56 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-07-26 19:47:05 +0300 |
| commit | eff296cc2c354f311dfe7696184f0313a6f04713 (patch) | |
| tree | 2bf777ea5fd87faaba36d8acf23d23fa9ec2c179 /main/core/parser/ast/BranchNode.java | |
| parent | a48ab32ea87b156145ccc454cdf71dc01cdda0fa (diff) | |
Add if branch token and node
Diffstat (limited to 'main/core/parser/ast/BranchNode.java')
| -rw-r--r-- | main/core/parser/ast/BranchNode.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/main/core/parser/ast/BranchNode.java b/main/core/parser/ast/BranchNode.java new file mode 100644 index 0000000..d6fb4cf --- /dev/null +++ b/main/core/parser/ast/BranchNode.java @@ -0,0 +1,42 @@ +package com.jantuomi.interpreter.main.core.parser.ast; + +import com.jantuomi.interpreter.main.core.parser.datatype.BooleanDataContainer; +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; +import com.jantuomi.interpreter.main.exception.InterpreterException; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 17.6.2016. + */ +public class BranchNode extends ASTNode { + + private ASTNode expression; + private BlockBodyNode branch; + + public BranchNode(Token token, ASTNode expression, BlockBodyNode branch) { + super(token); + this.expression = expression; + this.branch = branch; + } + + @Override + public DataContainer evaluate() throws InterpreterException { + DataContainer ev = expression.evaluate(); + boolean returnValue = false; + if (ev instanceof BooleanDataContainer) { + returnValue = ((BooleanDataContainer) ev).getData(); + if (returnValue) { + branch.evaluate(); + } + } + return new BooleanDataContainer(returnValue); + } + + @Override + List<ASTNode> getChildren() { + return Arrays.asList(expression, branch); + } +} |
