package ast.expressions; import org.antlr.v4.runtime.ParserRuleContext; import ast.ASTNode; public class BinaryExpression extends Expression { Expression subExpressions[] = new Expression[2]; public Expression getLeft() { return subExpressions[0]; } public Expression getRight() { return subExpressions[1]; } public void setLeft(Expression aLeft) { subExpressions[0] = aLeft; } public void setRight(Expression aRight) { subExpressions[1] = aRight; } @Override public void addChild(ASTNode item) { Expression expression = (Expression) item; if (getLeft() == null) setLeft(expression); else if (getRight() == null) setRight(expression); else throw new RuntimeException( "Error: attempting to add third child to binary expression"); super.addChild(item); } @Override public int getChildCount() { int childCount = 0; if (getLeft() != null) childCount++; if (getRight() != null) childCount++; return childCount; } @Override public ASTNode getChild(int i) { return subExpressions[i]; } @Override public void initializeFromContext(ParserRuleContext ctx) { super.initializeFromContext(ctx); if (ctx.getChildCount() == 3) setOperator(ctx.getChild(1).getText()); } }