ExpressionParser { static Parser<Expression> tuple(Parser<Expression> expr) { return paren(expr.sepBy(term(","))).map(TupleExpression::new); }    }
@Test public void testTuple() { Parser<Expression> parser = ExpressionParser.tuple(NUMBER); TerminalParserTest.assertParser(parser, "()", TupleExpression.of()); TerminalParserTest.assertParser(parser, "(1)", TupleExpression.of(number(1))); TerminalParserTest.assertParser(parser, "(1, 2)", TupleExpression.of(number(1), number(2))); TerminalParserTest.assertFailure(parser, "1", 1, 1, "( expected, 1 encountered."); TerminalParserTest.assertFailure(parser, "", 1, 1); }