ASTWhileStatement.java

package edu.udel.cis.vsl.tass.front.minimp.ast.statement;

import edu.udel.cis.vsl.tass.front.minimp.ast.expression.ASTExpressionIF;

public class ASTWhileStatement extends ASTStatement {
  private ASTExpressionIF predicate;
  private ASTStatementIF loopBody;
  private ASTLoopInvariant invariant = null;

  public ASTWhileStatement(ASTExpressionIF pred, ASTStatementIF body,
      ASTLoopInvariant invariant) {
    this.predicate = pred;
    this.loopBody = body;
    this.invariant = invariant;
  }

  public ASTWhileStatement(ASTExpressionIF pred, ASTStatementIF body) {
    this(pred, body, null);
  }

  public ASTExpressionIF getPredicate() {
    return predicate;
  }

  public ASTStatementIF getLoopBody() {
    return loopBody;
  }

  public boolean hasInvariant() {
    return this.invariant != null;
  }

  public ASTLoopInvariant getInvariant() {
    return invariant;
  }

  public String toString() {
    String result = new String();
    if (this.invariant != null) {
      result += this.invariant.toString() + "\n";
    }
    result += "while(" + this.predicate.toString() + ")\n"
        + this.loopBody.toString();
    return result;
  }

}