package water.rapids.ast.prims.misc;
import water.rapids.Env;
import water.rapids.Val;
import water.rapids.vals.ValNum;
import water.rapids.ast.AstPrimitive;
import water.rapids.ast.AstRoot;
/**
* Evaluate any number of expressions, returning the last one
*/
public class AstComma extends AstPrimitive {
@Override
public String[] args() {
return new String[]{"..."};
}
@Override
public int nargs() {
return -1;
} // variable args
@Override
public String str() {
return ",";
}
@Override
public Val apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
Val val = new ValNum(0);
for (int i = 1; i < asts.length; i++)
val = stk.track(asts[i].exec(env)); // Evaluate all expressions for side-effects
return val; // Return the last one
}
}