diff options
Diffstat (limited to 'main/core/parser/ast')
| -rw-r--r-- | main/core/parser/ast/ASTNode.java | 4 | ||||
| -rw-r--r-- | main/core/parser/ast/AdditionNode.java | 30 | ||||
| -rw-r--r-- | main/core/parser/ast/AssignmentNode.java | 36 | ||||
| -rw-r--r-- | main/core/parser/ast/ExpressionNode.java | 12 | ||||
| -rw-r--r-- | main/core/parser/ast/IntegerLiteralNode.java | 17 | ||||
| -rw-r--r-- | main/core/parser/ast/SymbolNode.java | 35 |
6 files changed, 27 insertions, 107 deletions
diff --git a/main/core/parser/ast/ASTNode.java b/main/core/parser/ast/ASTNode.java index 106ff75..4f840e3 100644 --- a/main/core/parser/ast/ASTNode.java +++ b/main/core/parser/ast/ASTNode.java @@ -18,6 +18,10 @@ abstract public class ASTNode { this.source = token; } + public Token.Type tokenType() { + return source.getTokenType(); + } + abstract List<ASTNode> getChildren(); public void print(int indent) { diff --git a/main/core/parser/ast/AdditionNode.java b/main/core/parser/ast/AdditionNode.java index f6ebc84..46f67a4 100644 --- a/main/core/parser/ast/AdditionNode.java +++ b/main/core/parser/ast/AdditionNode.java @@ -6,31 +6,31 @@ import com.jantuomi.interpreter.main.core.tokenizer.token.Token; import java.util.Arrays; import java.util.List; - /** - * Created by jan on 13.6.2016. + * Created by jan on 16.6.2016. */ -public class AdditionNode extends ExpressionNode { - - private ExpressionNode lhs; - private ExpressionNode rhs; +public class AdditionNode extends ASTNode { - public AdditionNode(ExpressionNode lhs, ExpressionNode rhs) { - super(new Token(Token.Type.AdditionToken)); + private ASTNode lhs; + private ASTNode rhs; + public AdditionNode(Token token, ASTNode lhs, ASTNode rhs) { + super(token); this.lhs = lhs; this.rhs = rhs; } @Override - public List<ASTNode> getChildren() { - return Arrays.asList(lhs, rhs); - } + public DataContainer evaluate() { + DataContainer operand1 = lhs.evaluate(); + DataContainer operand2 = rhs.evaluate(); + DataContainer result = operand1.add(operand2); + return result; + + } @Override - public DataContainer evaluate() { - DataContainer lhs = this.lhs.evaluate(); - DataContainer rhs = this.rhs.evaluate(); - return lhs.add(rhs); + List<ASTNode> getChildren() { + return Arrays.asList(lhs, rhs); } } diff --git a/main/core/parser/ast/AssignmentNode.java b/main/core/parser/ast/AssignmentNode.java deleted file mode 100644 index 8d8f8bc..0000000 --- a/main/core/parser/ast/AssignmentNode.java +++ /dev/null @@ -1,36 +0,0 @@ -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); - } -} diff --git a/main/core/parser/ast/ExpressionNode.java b/main/core/parser/ast/ExpressionNode.java deleted file mode 100644 index ac1a190..0000000 --- a/main/core/parser/ast/ExpressionNode.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.jantuomi.interpreter.main.core.parser.ast; - -import com.jantuomi.interpreter.main.core.tokenizer.token.Token; - -/** - * Created by jan on 11.6.2016. - */ -abstract public class ExpressionNode extends ASTNode { - public ExpressionNode(Token token) { - super(token); - } -} diff --git a/main/core/parser/ast/IntegerLiteralNode.java b/main/core/parser/ast/IntegerLiteralNode.java index d2fceb1..68b57d7 100644 --- a/main/core/parser/ast/IntegerLiteralNode.java +++ b/main/core/parser/ast/IntegerLiteralNode.java @@ -8,24 +8,23 @@ import java.util.Arrays; import java.util.List; /** - * Created by jan on 13.6.2016. + * Created by jan on 16.6.2016. */ -public class IntegerLiteralNode extends ExpressionNode { - - private int data; +public class IntegerLiteralNode extends ASTNode { + private IntegerDataContainer value; public IntegerLiteralNode(Token token) { super(token); - this.data = Integer.parseInt(token.getText()); + value = new IntegerDataContainer(Integer.parseInt(token.getText())); } @Override - List<ASTNode> getChildren() { - return Arrays.asList(); + public DataContainer evaluate() { + return value; } @Override - public DataContainer evaluate() { - return new IntegerDataContainer(data); + List<ASTNode> getChildren() { + return Arrays.asList(); } } diff --git a/main/core/parser/ast/SymbolNode.java b/main/core/parser/ast/SymbolNode.java deleted file mode 100644 index 1457851..0000000 --- a/main/core/parser/ast/SymbolNode.java +++ /dev/null @@ -1,35 +0,0 @@ -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 SymbolNode extends ExpressionNode { - private String symbol; - - public SymbolNode(Token token) { - super(token); - - this.symbol = token.getText(); - } - - @Override - List<ASTNode> getChildren() { - return Arrays.asList(); - } - - public String getSymbol() { - return symbol; - } - - @Override - public DataContainer evaluate() { - return State.getInstance().getSymbolValue(symbol); - } -} |
