ASTCompoundStatement.java

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

import java.util.List;
import java.util.Vector;

public class ASTCompoundStatement extends ASTStatement {
  List<ASTStatementIF> stmtList;

  public ASTCompoundStatement(List<ASTStatementIF> body) {
    if (body != null) {
      stmtList = body;
    } else {
      stmtList = new Vector<ASTStatementIF>();
    }
  }

  public List<ASTStatementIF> getBody() {
    return stmtList;
  }

  public ASTStatementIF getStatement(int index) {
    return stmtList.get(index);
  }

  public String toString() {
    String result = "{\n\t";
    for (ASTStatementIF stmt : stmtList) {
      result += stmt.toString() + "\n";
    }
    result += "};";
    return result;
  }

  public ASTStatementIF getStatement(String label) {
    for (ASTStatementIF stmt : this.stmtList) {
      if (stmt instanceof ASTWhileStatement) {
        if (((ASTWhileStatement) stmt).getInvariant() != null) {
          if (((ASTWhileStatement) stmt).getInvariant().getLabel().equals(label)) {
            return stmt;
          }
        }
      } else if (stmt instanceof ASTCompoundStatement) {
        if (((ASTCompoundStatement) stmt).getStatement(label) != null) {
          return ((ASTCompoundStatement) stmt).getStatement(label);
        }
      }
    }
    return null;
  }
}