Пример #1
0
        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));
        }
Пример #2
0
 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);
         }
     }
 }