package zinara.ast.expression;
import zinara.code_generator.*;
import java.util.ArrayList;
import java.io.IOException;
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.FunctionType;
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.*;
public class FunctionCall extends BooleanExp {
private String func_name;
private ArrayList expr_list; // arraylist of expressions
private SymTable symTable;
public FunctionCall(String func_name, ArrayList s, SymTable st) {
this.func_name = func_name;
this.expr_list = s;
this.symTable = st;
}
public Type getType() {
if (type != null) return type;
type = ((FunctionType)symTable.getSymValueForId(this.func_name).getType()).getReturnType();
return type;
}
public String toString() { return func_name + "(" + expr_list + ")"; }
public void tox86(Genx86 generator)
throws InvalidCodeException,IOException{
RoutineGenerator.gen_routine(generator,symTable,
func_name,expr_list,
register,true);
}
public boolean isStaticallyKnown() { return false; }
public Object staticValue() { return null; };
}