internal static void CompileStream(XmlReader[] xmlReaders, string filename, Stream stream, bool fOutputCfg, Uri originalUri, string[] referencedAssemblies, string keyFile) { int num = xmlReaders.Length; List <CustomGrammar.CfgResource> cfgResources = new List <CustomGrammar.CfgResource>(); CustomGrammar customGrammar = new CustomGrammar(); for (int i = 0; i < num; i++) { string srgsPath = null; Uri uri = originalUri; if (uri == null && xmlReaders[i].BaseURI != null && xmlReaders[i].BaseURI.Length > 0) { uri = new Uri(xmlReaders[i].BaseURI); } if (uri != null && (!uri.IsAbsoluteUri || uri.IsFile)) { srgsPath = Path.GetDirectoryName(uri.IsAbsoluteUri ? uri.AbsolutePath : uri.OriginalString); } StringBuilder stringBuilder = new StringBuilder(); ISrgsParser srgsParser = new XmlParser(xmlReaders[i], uri); CultureInfo culture; object obj = CompileStream(i + 1, srgsParser, srgsPath, filename, stream, fOutputCfg, stringBuilder, cfgResources, out culture, referencedAssemblies, keyFile); if (!fOutputCfg) { customGrammar.Combine((CustomGrammar)obj, stringBuilder.ToString()); } } if (!fOutputCfg) { customGrammar.CreateAssembly(filename, cfgResources); } }
internal static void CompileStream(SrgsDocument srgsGrammar, string filename, Stream stream, bool fOutputCfg, string[] referencedAssemblies, string keyFile) { ISrgsParser srgsParser = new SrgsDocumentParser(srgsGrammar.Grammar); List <CustomGrammar.CfgResource> cfgResources = new List <CustomGrammar.CfgResource>(); StringBuilder stringBuilder = new StringBuilder(); srgsGrammar.Grammar.Validate(); CultureInfo culture; object obj = CompileStream(1, srgsParser, null, filename, stream, fOutputCfg, stringBuilder, cfgResources, out culture, referencedAssemblies, keyFile); if (!fOutputCfg) { CustomGrammar customGrammar = new CustomGrammar(); customGrammar.Combine((CustomGrammar)obj, stringBuilder.ToString()); customGrammar.CreateAssembly(filename, cfgResources); } }