/**
* Parse a subexpression then return parsed result.
*
* @param string $expression the full string of a sub expression
* @param array<string,array|string|integer> $context current compile context
*
* @return array<boolean|integer|array> Return parsed result
*
* @expect array(\LightnCandy\Parser::SUBEXP, array(array('a'), array('b')), '(a b)') when input '(a b)', array('usedFeature' => array('subexp' => 0), 'flags' => array('advar' => 0, 'namev' => 0, 'this' => 0, 'exhlp' => 1, 'strpar' => 0))
*/
public static function subexpression($expression, &$context)
{
$context['usedFeature']['subexp']++;
$vars = static::analyze(substr($expression, 1, -1), $context);
$avars = static::advancedVariable($vars, $context, $expression);
if (isset($avars[0][0]) && !$context['flags']['exhlp']) {
if (!Validator::helper($context, $avars[0][0], true)) {
$context['error'][] = "Can not find custom helper function defination {$avars[0][0]}() !";
}
}
return array(static::SUBEXP, $avars, $expression);
}