Ejemplo n.º 1
0
        public static IDLMemberAnnotationArray ToAnnotationArray(this IDLParserToken p)
        {
            var a = new IDLMemberAnnotationArray();

            a.Symbols.Item1 = p.AssertSymbol("[");


            // multiple constructors
            a.Symbols.Item2 = p.UntilSelected(
                pp =>
            {
                if (pp.Text == "]")
                {
                    return(pp);
                }

                if (a.Items.Count > 0)
                {
                    pp = pp.AssertSymbol(",");
                }

                var Constructor = new IDLMemberAnnotation
                {
                    Keyword = pp.SkipTo(),
                    //.AssertName("Constructor"),
                };

                Constructor.Keyword.SkipTo().With(
                    Item1 =>
                {
                    if (Item1.Text != "(")
                    {
                        return;
                    }

                    Constructor.ParameterSymbols.Item1 = Item1;
                    ToParameters(Constructor.Parameters, Constructor.ParameterSymbols);
                }
                    );

                a.Items.Add(Constructor);

                return(Constructor.Terminator.SkipTo());
            }
                ).AssertSymbol("]");

            return(a);
        }
Ejemplo n.º 2
0
        public static IDLMemberAnnotationArray ToAnnotationArray(this IDLParserToken p)
        {
            var a = new IDLMemberAnnotationArray();

            a.Symbols.Item1 = p.AssertSymbol("[");


            // multiple constructors
            a.Symbols.Item2 = p.UntilSelected(
                pp =>
                {
                    if (pp.Text == "]")
                        return pp;

                    if (a.Items.Count > 0)
                    {
                        pp = pp.AssertSymbol(",");
                    }

                    var Constructor = new IDLMemberAnnotation
                    {
                        Keyword = pp.SkipTo(),
                        //.AssertName("Constructor"),
                    };

                    Constructor.Keyword.SkipTo().With(
                        Item1 =>
                        {
                            if (Item1.Text != "(")
                                return;

                            Constructor.ParameterSymbols.Item1 = Item1;
                            ToParameters(Constructor.Parameters, Constructor.ParameterSymbols);
                        }
                    );

                    a.Items.Add(Constructor);

                    return Constructor.Terminator.SkipTo();
                }
            ).AssertSymbol("]");

            return a;
        }