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;
}
}