package ql.ast.statement; import ql.ast.expression.IExpression; import ql.ast.type.BooleanType; import ql.ast.visitor_elements.IStatementElementVisitor; /** * @author orosu */ public class IfStatement implements IStatement { private final IExpression _expression; private final Block _ifBlock; private final Block _elseBlock; public IfStatement(IExpression expression, Block ifBlock, Block elseBlock) { this._expression = expression; this._ifBlock = ifBlock; this._elseBlock = elseBlock; } public IExpression getExpression() { return this._expression; } public StatementList getIfStatementList() { return this._ifBlock.getStatementList(); } public StatementList getElseStatementList() { return this._elseBlock.getStatementList(); } @Override public BooleanType getType() { return new BooleanType(); } @Override public String toString() { return "(statement if ( " + this._expression.toString() + " ) " + this._ifBlock.toString() + (this._elseBlock.getStatementList().size() > 0 ? " else " + this._elseBlock.toString() : "") + ")"; } @Override public <T> T accept(IStatementElementVisitor<T> visitor) { return visitor.visit(this); } }