package expressions;
import common.prettyprinter.PrettyStringBuilder;
import expressions.annotation.SyntacticSugar;
/**
* A condition without an else block.
*
* @author Benedikt Meurer
* @version $Id$
*/
@SyntacticSugar
public final class Condition1 extends Expression {
//
// Attributes
//
/**
* The conditional block.
*/
private Expression e0;
/**
* The true block.
*/
private Expression e1;
//
// Constructor
//
/**
* Allocates a new <code>Condition1</code> instance.
*
* @param e0 the condition.
* @param e1 the true case.
*/
public Condition1(Expression e0, Expression e1) {
this.e0 = e0;
this.e1 = e1;
}
//
// Primitives
//
/**
* {@inheritDoc}
*
* @see expressions.Expression#translateSyntacticSugar()
*/
@Override
public Expression translateSyntacticSugar() {
return new Condition(this.e0, this.e1, UnitConstant.UNIT);
}
/**
* {@inheritDoc}
*
* @see expressions.Expression#substitute(java.lang.String, expressions.Expression)
*/
@Override
public Expression substitute(String id, Expression e) {
return new Condition1(this.e0.substitute(id, e), this.e1.substitute(id, e));
}
/**
* {@inheritDoc}
*
* @see expressions.Expression#toPrettyStringBuilder()
*/
@Override
protected PrettyStringBuilder toPrettyStringBuilder() {
PrettyStringBuilder builder = new PrettyStringBuilder(this, 0);
builder.appendKeyword("if");
builder.appendText(" ");
builder.appendBuilder(this.e0.toPrettyStringBuilder(), 0);
builder.appendBreak();
builder.appendText(" ");
builder.appendKeyword("then");
builder.appendText(" ");
builder.appendBuilder(this.e1.toPrettyStringBuilder(), 0);
return builder;
}
//
// Accessors
//
/**
* @return Returns the e0.
*/
public Expression getE0() {
return this.e0;
}
/**
* @return Returns the e1.
*/
public Expression getE1() {
return this.e1;
}
}