コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: IdentifierParselet.cs プロジェクト: xserve98/Mond
        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));
        }