ASTForStatement.java

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

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

public class ASTForStatement extends ASTStatement {
  ASTExpressionIF initializer;
  ASTExpressionIF predicate;
  ASTExpressionIF update;
  ASTStatementIF body;
  ASTLoopInvariant invariant;

  public ASTForStatement(ASTExpressionIF initializer, ASTExpressionIF pred,
      ASTExpressionIF update, ASTStatementIF body, ASTLoopInvariant invariant) {
    this.initializer = initializer;
    this.predicate = pred;
    this.update = update;
    this.body = body;
    this.invariant = invariant;
  }

  public ASTExpressionIF getInitializer() {
    return this.initializer;
  }

  public ASTExpressionIF getUpdate() {
    return this.update;
  }

  public ASTExpressionIF getPredicate() {
    return this.predicate;
  }

  public ASTLoopInvariant getInvariant() {
    return this.invariant;
  }

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

  public ASTStatementIF getBody() {
    return this.body;
  }

  public String toString() {
    String result = null;
    if (this.invariant != null) {
      result = this.invariant.toString() + "\nfor(";
    } else {
      result = "for(";
    }

    if (this.initializer != null) {
      result += this.initializer.toString();
    }
    result += "; ";
    if (this.predicate != null) {
      result += this.predicate.toString();
    }
    result += "; ";
    if (this.update != null) {
      result += this.update.toString();
    }
    result += ")\n" + this.body;
    return result;
  }
}