예제 #1
0
        void selector(out Model.Selector sel)
        {
            sel = new Model.Selector();
            Model.SimpleSelector ss = null;
            Model.Combinator?    cb = null;

            simpleselector(out ss);
            sel.SimpleSelectors.Add(ss);
            while (la.kind == 4)
            {
                Get();
            }
            while (StartOf(12))
            {
                if (la.kind == 29 || la.kind == 30 || la.kind == 31)
                {
                    if (la.kind == 29)
                    {
                        Get();
                        cb = Model.Combinator.PrecededImmediatelyBy;
                    }
                    else if (la.kind == 30)
                    {
                        Get();
                        cb = Model.Combinator.ChildOf;
                    }
                    else
                    {
                        Get();
                        cb = Model.Combinator.PrecededBy;
                    }
                }
                while (la.kind == 4)
                {
                    Get();
                }
                simpleselector(out ss);
                if (cb.HasValue)
                {
                    ss.Combinator = cb.Value;
                }
                sel.SimpleSelectors.Add(ss);

                cb = null;
                while (la.kind == 4)
                {
                    Get();
                }
            }
        }
예제 #2
0
        static string Render(Model.Selector sel)
        {
            StringBuilder txt = new StringBuilder();

            bool first = true;

            foreach (Model.SimpleSelector ss in sel.SimpleSelectors)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    txt.Append(" ");
                }
                txt.AppendFormat("<span class=\"simpleSelector\">{0}</span>", Render(ss));
            }

            return(txt.ToString());
        }
예제 #3
0
        void selector(out Model.Selector sel)
        {
            sel = new Model.Selector();
            Model.SimpleSelector ss = null;
            Model.Combinator? cb = null;

            simpleselector(out ss);
            sel.SimpleSelectors.Add(ss);
            while (la.kind == 4) {
                Get();
            }
            while (StartOf(12)) {
                if (la.kind == 29 || la.kind == 30 || la.kind == 31) {
                    if (la.kind == 29) {
                        Get();
                        cb = Model.Combinator.PrecededImmediatelyBy;
                    } else if (la.kind == 30) {
                        Get();
                        cb = Model.Combinator.ChildOf;
                    } else {
                        Get();
                        cb = Model.Combinator.PrecededBy;
                    }
                }
                while (la.kind == 4) {
                    Get();
                }
                simpleselector(out ss);
                if (cb.HasValue) { ss.Combinator = cb.Value; }
                sel.SimpleSelectors.Add(ss);

                cb = null;
                while (la.kind == 4) {
                    Get();
                }
            }
        }
예제 #4
0
        void ruleset(out Model.RuleSet rset)
        {
            rset = new Model.RuleSet();
            Model.Selector    sel = null;
            Model.Declaration dec = null;

            selector(out sel);
            rset.Selectors.Add(sel);
            while (la.kind == 4)
            {
                Get();
            }
            while (la.kind == 25)
            {
                Get();
                while (la.kind == 4)
                {
                    Get();
                }
                selector(out sel);
                rset.Selectors.Add(sel);
                while (la.kind == 4)
                {
                    Get();
                }
            }
            Expect(26);
            while (la.kind == 4)
            {
                Get();
            }
            if (StartOf(3))
            {
                declaration(out dec);
                rset.Declarations.Add(dec);
                while (la.kind == 4)
                {
                    Get();
                }
                while (la.kind == 27)
                {
                    Get();
                    while (la.kind == 4)
                    {
                        Get();
                    }
                    if (la.val.Equals("}"))
                    {
                        Get(); return;
                    }

                    declaration(out dec);
                    rset.Declarations.Add(dec);
                    while (la.kind == 4)
                    {
                        Get();
                    }
                }
                if (la.kind == 27)
                {
                    Get();
                    while (la.kind == 4)
                    {
                        Get();
                    }
                }
            }
            Expect(28);
            while (la.kind == 4)
            {
                Get();
            }
        }