ASTFunction.java

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

import java.util.List;
import java.util.Map;

import edu.udel.cis.vsl.tass.front.minimp.ast.declaration.ASTDeclarationIF;
import edu.udel.cis.vsl.tass.front.minimp.ast.declaration.ASTVariableDeclaration;
import edu.udel.cis.vsl.tass.front.minimp.ast.declaration.ASTVariableDeclaration.VariableCategory;
import edu.udel.cis.vsl.tass.front.minimp.ast.statement.ASTStatementIF;

public class ASTFunction {
  private Map<String, ASTDeclarationIF> localVariableMap;
  private List<ASTStatementIF> statementList;

  public ASTFunction(Map<String, ASTDeclarationIF> variables,
      List<ASTStatementIF> statements) {
    localVariableMap = variables;
    statementList = statements;
  }

  public Map<String, ASTDeclarationIF> getLocalVariableMap() {
    return localVariableMap;
  }

  public ASTDeclarationIF getLocalVariable(String name) {
    return localVariableMap.get(name);
  }

  public List<ASTStatementIF> getStatementList() {
    return statementList;
  }

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

  public String toString() {
    String result = "begin function body:\n";
    for (ASTDeclarationIF decl : this.localVariableMap.values()) {
      if (((ASTVariableDeclaration) decl).getVariableCategory() != VariableCategory.FORMAL) {
        result += decl.toString();
      }
    }
    for (ASTStatementIF stmt : this.statementList) {
      result += stmt.toString();
    }
    result += "end function body\n";
    return result;
  }
}