diff options
Diffstat (limited to 'main/core/parser/ast/AssignmentNode.java')
| -rw-r--r-- | main/core/parser/ast/AssignmentNode.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/main/core/parser/ast/AssignmentNode.java b/main/core/parser/ast/AssignmentNode.java new file mode 100644 index 0000000..bcbff1c --- /dev/null +++ b/main/core/parser/ast/AssignmentNode.java @@ -0,0 +1,33 @@ +package com.jantuomi.interpreter.main.core.parser.ast; + +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.runtime.State; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 21.6.2016. + */ +public class AssignmentNode extends BinaryOperatorNode { + public AssignmentNode(Token token, SymbolNode lhs, ASTNode rhs) { + super(token, lhs, rhs); + } + + @Override + public DataContainer evaluate() { + SymbolNode symbol = (SymbolNode) lhs; + DataContainer rValue = rhs.evaluate(); + State.getInstance().setSymbolValueToScope( + symbol.getName(), + rValue + ); + return rValue; + } + + @Override + List<ASTNode> getChildren() { + return Arrays.asList(lhs, rhs); + } +} |
