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(); } } }
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()); }
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(); } }