ExpressionParser { static Parser<Expression> functionCall(Parser<Expression> param) { return Parsers.sequence( TerminalParser.QUALIFIED_NAME, paren(param.sepBy(TerminalParser.term(","))), FunctionExpression::new); }    }
@Test public void testFunctionCall() { Parser<Expression> parser = ExpressionParser.functionCall(NUMBER); TerminalParserTest.assertParser(parser, "f()", FunctionExpression.of(QualifiedName.of("f"))); TerminalParserTest.assertParser(parser, "a.b(1)", FunctionExpression.of(QualifiedName.of("a", "b"), number(1))); TerminalParserTest.assertParser(parser, "a.b(1, 2)", FunctionExpression.of(QualifiedName.of("a", "b"), number(1), number(2))); }