protected function argumentDef(&$args, &$isVararg, $delim = ',')
{
$s = $this->seek();
if (!$this->literal('(')) {
return false;
}
$values = array();
$isVararg = false;
while (true) {
if ($this->literal("...")) {
$isVararg = true;
break;
}
if ($this->variable($vname)) {
$arg = array("arg", $vname);
$ss = $this->seek();
if ($this->assign() && $this->expressionList($value)) {
$arg[] = $value;
} else {
$this->seek($ss);
if ($this->literal("...")) {
$arg[0] = "rest";
$isVararg = true;
}
}
$values[] = $arg;
if ($isVararg) {
break;
}
continue;
}
if ($this->value($literal)) {
$values[] = array("lit", $literal);
}
if (!$this->literal($delim)) {
break;
}
}
if (!$this->literal(')')) {
$this->seek($s);
return false;
}
$args = $values;
return true;
}