Example #1
0
        private Syntax.Expression ParseInitializer()
        {
            Syntax.Expression res = null;
            if (scan.Peek().type == Token.Type.LBRACE)
            {
                scan.Read();
                res = new Syntax.Initializer();
                Syntax.InitializerList init_list = null;
                while (true)
                {
                    if ((init_list = ParseInitializerList()) != null)
                    {
                        ((Syntax.Initializer)res).AddInitializer(init_list);
                    }

                    if (scan.Peek().type != Token.Type.COMMA)
                    {
                        break;
                    }
                    scan.Read();
                }

                CheckToken(scan.Peek(), Token.Type.RBRACE, true);
            }
            else
            {
                res = ParseAssignmentExpression();
            }

            return(res);
        }
Example #2
0
        private Syntax.InitializerList ParseInitializerList()
        {
            Syntax.InitializerList res = null;
            while (true)
            {
                Syntax.InitializerList.Designation designation = ParseDesignation();
                Syntax.Expression const_val = null;
                if (designation != null)
                {
                    CheckToken(scan.Peek(), Token.Type.OP_ASSIGN, true);
                    const_val = ParseInitializer();
                    Syntax.Object.CheckObject(const_val);
                }
                else
                {
                    const_val = ParseConstExpr();
                }

                if (const_val != null)
                {
                    if (res == null)
                    {
                        res = new Syntax.InitializerList();
                    }
                    res.AddInitializer(const_val, designation);
                }

                if (scan.Peek().type != Token.Type.COMMA || const_val == null)
                {
                    break;
                }
                scan.Read();
            }

            return(res);
        }
Example #3
0
        private Syntax.InitializerList ParseInitializerList()
        {
            Syntax.InitializerList res = null;
            while (true)
            {
                Syntax.InitializerList.Designation designation = ParseDesignation();
                Syntax.Expression const_val = null;
                if (designation != null)
                {
                    CheckToken(scan.Peek(), Token.Type.OP_ASSIGN, true);
                    const_val = ParseInitializer();
                    Syntax.Object.CheckObject(const_val);
                }
                else
                {
                    const_val = ParseConstExpr();
                }

                if (const_val != null)
                {
                    if (res == null)
                    {
                        res = new Syntax.InitializerList();
                    }
                    res.AddInitializer(const_val, designation);
                }

                if (scan.Peek().type != Token.Type.COMMA || const_val == null)
                {
                    break;
                }
                scan.Read();
            }

            return res;
        }