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); } }
/// <summary> /// Produces the binary grammar format. /// </summary> /// <param name="srgsGrammar">Source SRGS XML streams</param> /// <param name="filename">filename to compile to</param> /// <param name="stream">stream to compile to</param> /// <param name="fOutputCfg">Compile for CFG or DLL</param> /// <param name="referencedAssemblies">List of referenced assemblies</param> /// <param name="keyFile">Strong name</param> 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(); StringBuilder innerCode = new(); CultureInfo culture; // Validate the grammar before compiling it. Set the tag-format and sapi flags too. srgsGrammar.Grammar.Validate(); object cg = CompileStream(1, srgsParser, null, filename, stream, fOutputCfg, innerCode, cfgResources, out culture, referencedAssemblies, keyFile); // Create the DLL if this needs to be done if (!fOutputCfg) { throw new PlatformNotSupportedException(); } }