package main.nl.uva.parser.statement; import java.util.List; import main.nl.uva.parser.Line; import main.nl.uva.parser.expression.Expression; import main.nl.uva.ui.UI; import main.nl.uva.ui.element.IfThenUI; import main.nl.uva.ui.element.UIElement; import main.nl.uva.validation.ASTValidation; import main.nl.uva.validation.Scope; import main.nl.uva.validation.error.InvalidTypeError; import main.nl.uva.validation.type.Value; public class IfThen extends Block { protected final List<Statement> _ifStatements; protected final Expression _expression; public IfThen(final Expression expression, final List<Statement> ifStatements, final Line lineInfo) { super(lineInfo); _expression = expression; _ifStatements = ifStatements; } @Override public ASTValidation validateAndCalculate(final Scope scope) { ASTValidation valid = _expression.validateAndCalculate(scope); if (!(_expression.getValue().isTypeOf(Value.Type.BOOLEAN))) { valid.addError(new InvalidTypeError(this.toString(), getLineInfo())); } valid = validateChildren(valid, _ifStatements, scope); removeChildrenFromScope(_ifStatements, scope); return valid; } @Override public String toString() { return "if ( " + _expression + " )"; } @Override public UIElement getLayout(final UI parentUI) { return new IfThenUI(_expression, _ifStatements, parentUI); } }