package openmods.calc.parsing;
import com.google.common.collect.ImmutableList;
import java.util.List;
import openmods.calc.IExecutable;
import openmods.calc.SymbolCall;
public class SymbolCallNode<E> extends SymbolOpNode<E> {
private final List<IExprNode<E>> args;
public SymbolCallNode(String symbol, List<? extends IExprNode<E>> args) {
super(symbol);
this.args = ImmutableList.copyOf(args);
}
@Override
public void flatten(List<IExecutable<E>> output) {
for (IExprNode<E> arg : args)
arg.flatten(output);
output.add(new SymbolCall<E>(symbol, args.size(), 1));
}
@Override
public String toString() {
return "<call: " + symbol + " " + args + ">";
}
@Override
public Iterable<IExprNode<E>> getChildren() {
return args;
}
}