public static IList <IMessage> TryCreateGenerationInfo(XbnfDocument document, out XbnfGenerationInfo genInfo) { var includes = new XbnfImportList(); _GatherIncludes(document, includes); var incs = new List <XbnfDocument>(); incs.Add(document); foreach (var inc in includes) { incs.Add(inc.Document); } var doc = XbnfDocument.Merge(incs); var cfg = new CfgDocument(); return(_TryToGenInfo(doc, cfg, out genInfo)); }
static void _GatherIncludes(XbnfDocument doc, XbnfImportList result) { for (int ic = doc.Includes.Count, i = 0; i < ic; ++i) { var inc = doc.Includes[i]; var found = false; for (int jc = result.Count, j = 0; j < jc; ++j) { var fn = result[i].Document.FileOrUrl; if (!string.IsNullOrEmpty(fn) && 0 == string.Compare(fn, inc.Document.FileOrUrl)) { found = true; break; } } if (!found) { result.Add(inc); _GatherIncludes(inc.Document, result); } } }