Ejemplo n.º 1
0
        // Parse the parameter declarations on a function
        void ParseParameters(ast.ExprNodeFunction fn)
        {
            // Must have open paren
            t.SkipRequired(Token.openRound);

            // Empty?
            if (t.SkipOptional(Token.closeRound))
            {
                return;
            }

            // Parameters
            while (true)
            {
                // Name
                t.Require(Token.identifier);
                fn.Parameters.Add(new ast.Parameter(t.GetBookmark(), t.identifier));
                t.Next();

                // Another?
                if (!t.SkipOptional(Token.comma))
                {
                    break;
                }
            }

            // Finished
            t.SkipRequired(Token.closeRound);
        }
Ejemplo n.º 2
0
        // Parse a function declaration
        ast.ExprNodeFunction ParseFunction()
        {
            // Create the function
            var fn = new ast.ExprNodeFunction(t.GetBookmark());

            // Functions can be anonymous
            if (t.token == Token.identifier)
            {
                fn.Name = t.identifier;
                t.Next();
            }

            // Parameters
            ParseParameters(fn);

            // Body
            fn.Code = ParseStatementBlock(TriState.Yes);

            return(fn);
        }
Ejemplo n.º 3
0
        // Parse a function declaration
        ast.ExprNodeFunction ParseFunction()
        {
            // Create the function
            var fn = new ast.ExprNodeFunction(t.GetBookmark());

            // Functions can be anonymous
            if (t.token == Token.identifier)
            {
                fn.Name = t.identifier;
                t.Next();
            }

            // Parameters
            ParseParameters(fn);

            // Body
            fn.Code = ParseStatementBlock(TriState.Yes);

            return fn;
        }