diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-06-13 23:16:54 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-07-26 19:46:50 +0300 |
| commit | 12eeefcdba1ee392f033f51e6b9826eaae3c4de6 (patch) | |
| tree | 061f3472bfc924dfa05b46f3aeab76b788b86914 /main/core/parser/ast/AssignmentNode.java | |
| parent | 560e490ea44970edca22181cc2726f0b2ebb82c9 (diff) | |
Add tokenizer, parser and support for certain operations
Diffstat (limited to 'main/core/parser/ast/AssignmentNode.java')
| -rw-r--r-- | main/core/parser/ast/AssignmentNode.java | 36 |
1 files changed, 36 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..8d8f8bc --- /dev/null +++ b/main/core/parser/ast/AssignmentNode.java @@ -0,0 +1,36 @@ +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 11.6.2016. + */ +public class AssignmentNode extends ASTNode { + + private SymbolNode lhs; + private ExpressionNode rhs; + + public AssignmentNode(SymbolNode lhs, ExpressionNode rhs) { + super(new Token(Token.Type.AssignmentToken)); + + this.lhs = lhs; + this.rhs = rhs; + } + + @Override + public DataContainer evaluate() { + DataContainer value = rhs.evaluate(); + State.getInstance().setSymbolValue(lhs.getSymbol(), value); + return value; + } + + @Override + List<ASTNode> getChildren() { + return Arrays.asList(lhs, rhs); + } +} |
