functionParser function

Parser<Expression<Object>> functionParser({
  1. required ParserContext context,
  2. required ExpressionFunction<Object> function,
  3. required SettableParser loopbackParser,
})

Implementation

Parser<Expression> functionParser({
  required ParserContext context,
  required ExpressionFunction<Object> function,
  required SettableParser loopbackParser,
}) {
  return (string(function.name, 'expected function name: ${function.name}') &
          char('(').trim() &
          ArgumentsParser(
            parserContext: context,
            parameters: function.parameters,
            loopbackParser: loopbackParser,
          ) &
          char(')').trim())
      .valueContextMap(
        (values, context) => FunctionExpression(
          context.toPositionString(),
          function,
          values[2] as Map<String, Expression>,
        ),
      );
}