package zinara.ast.instructions; import zinara.ast.Param; import zinara.ast.RoutineGenerator; import zinara.ast.expression.Expression; import zinara.ast.expression.Identifier; import zinara.ast.type.Type; import zinara.ast.type.RoutineType; import zinara.ast.type.ListType; import zinara.ast.type.TupleType; import zinara.ast.type.DictType; import zinara.code_generator.*; import zinara.exceptions.InvalidCodeException; import zinara.exceptions.TypeClashException; import zinara.symtable.*; import java.io.IOException; import java.util.ArrayList; public class ProcedureCall extends Instruction{ private ArrayList expr_list; // arraylist of expressions private String func_name; private SymTable symTable; public ProcedureCall(String fn, ArrayList exl, SymTable st){ this.func_name = fn; this.expr_list = exl; this.symTable = st; } public String getFuncion(){ return this.func_name; } public ArrayList getExpressionList(){ return this.expr_list; } public String toString() { String ret = "<" + func_name + "("; for (int i = 0; i < expr_list.size(); i++) ret += (Expression)expr_list.get(i) + ", "; return (ret.substring(0, ret.length()-2) + ")>"); } public void tox86(Genx86 generator) throws InvalidCodeException,IOException{ RoutineGenerator.gen_routine(generator,symTable, func_name,expr_list, register,false); } }