void selector(out Selector sel) { sel = new Selector(); SimpleSelector ss = null; 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 = Combinator.PrecededImmediatelyBy; } else if (la.kind == 30) { Get(); cb = Combinator.ChildOf; } else { Get(); cb = 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(); } } }
void simpleselector(out SimpleSelector ss) { ss = new SimpleSelector(); string psd = null; CssConvert.CssParser.Attribute atb = null; SimpleSelector parent = ss; string ident = null; if (StartOf(3)) { identity(out ident); ss.ElementName = ident; } else if (la.kind == 32) { Get(); ss.ElementName = "*"; } else if (StartOf(13)) { if (la.kind == 33) { Get(); identity(out ident); ss.ID = ident; } else if (la.kind == 34) { Get(); identity(out ident); ss.Class = ident; } else if (la.kind == 35) { attrib(out atb); ss.Attribute = atb; } else { pseudo(out psd); ss.Pseudo = psd; } } else { SynErr(54); } while (StartOf(13)) { SimpleSelector child = new SimpleSelector(); if (la.kind == 33) { Get(); identity(out ident); child.ID = ident; } else if (la.kind == 34) { Get(); identity(out ident); child.Class = ident; } else if (la.kind == 35) { attrib(out atb); child.Attribute = atb; } else { pseudo(out psd); child.Pseudo = psd; } parent.Child = child; parent = child; } }