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