protected function _parseArgs()
{
$inString = false;
$cpt = 0;
$last = $char = $value = $name = '';
$args = [];
$body = '';
while ($token = $this->_stream->current(true)) {
$body .= $token[1];
switch ($token[0]) {
case '(':
if ($cpt) {
$value .= $token[1];
}
$cpt++;
break;
case '=':
$name = $value;
$value = '';
break;
case ')':
$cpt--;
if ($cpt) {
$value .= $token[1];
break;
}
/* Same behavior as comma */
/* Same behavior as comma */
case ',':
$value = trim($value);
if ($value !== '') {
$name ? $args[trim($name)] = $value : ($args[] = $value);
}
$name = $value = '';
break;
default:
$value .= $token[1];
break;
}
if ($token[1] === ')' && $cpt === 0) {
break;
}
$this->_stream->next();
}
return compact('args', 'body');
}