// ------------- CompileAndSortMatchPatterns() ------------- private void CompileAndSortMatches(Stylesheet sheet) { Debug.Assert(sheet.TemplateMatches.Count == 0); foreach (Template template in sheet.Templates) { if (template.Match != null) { EnterScope(template); QilNode result = CompileMatchPattern(template.Match); if (result.NodeType == QilNodeType.Sequence) { QilList filters = (QilList)result; for (int idx = 0; idx < filters.Count; idx++) { sheet.AddTemplateMatch(template, (QilLoop)filters[idx]); } } else { sheet.AddTemplateMatch(template, (QilLoop)result); } ExitScope(); } } sheet.SortTemplateMatches(); foreach (Stylesheet import in sheet.Imports) { CompileAndSortMatches(import); } }