private static Expression ParseLambdaExpression(Parser parser, Token token) { var arguments = new List <string>(); string otherArgs = null; // parse argument list if (!parser.Match(TokenType.RightParen)) { while (true) { if (parser.MatchAndTake(TokenType.Ellipsis)) { otherArgs = parser.Take(TokenType.Identifier).Contents; break; } var identifier = parser.Take(TokenType.Identifier); arguments.Add(identifier.Contents); if (parser.Match(TokenType.RightParen)) { break; } parser.Take(TokenType.Comma); } } parser.Take(TokenType.RightParen); parser.Take(TokenType.Pointy); var body = FunctionParselet.ParseLambdaExpressionBody(parser, token); return(new FunctionExpression(token, null, arguments, otherArgs, body)); }
private static Expression ParseLambdaExpression(Parser parser, Token token) { var arguments = new List <string> { token.Contents }; var body = FunctionParselet.ParseLambdaExpressionBody(parser, token); return(new FunctionExpression(token, null, arguments, null, body)); }