private static string CheckRuleName(Stream stream, string rulename, bool isImportedGrammar, bool stgInit, out bool sapi53Only, out GrammarOptions grammarOptions) { sapi53Only = false; long position = stream.Position; using (StreamMarshaler streamHelper = new StreamMarshaler(stream)) { CfgGrammar.CfgSerializedHeader cfgSerializedHeader = null; CfgGrammar.CfgHeader cfgHeader = CfgGrammar.ConvertCfgHeader(streamHelper, false, true, out cfgSerializedHeader); StringBlob pszSymbols = cfgHeader.pszSymbols; string text = (cfgHeader.ulRootRuleIndex != uint.MaxValue && cfgHeader.ulRootRuleIndex < cfgHeader.rules.Length) ? pszSymbols.FromOffset(cfgHeader.rules[cfgHeader.ulRootRuleIndex]._nameOffset) : null; sapi53Only = ((cfgHeader.GrammarOptions & (GrammarOptions.MssV1 | GrammarOptions.IpaPhoneme | GrammarOptions.W3cV1 | GrammarOptions.STG)) != 0); if (text == null && string.IsNullOrEmpty(rulename)) { throw new ArgumentException(SR.Get(SRID.SapiErrorNoRulesToActivate)); } if (!string.IsNullOrEmpty(rulename)) { bool flag = false; CfgRule[] rules = cfgHeader.rules; for (int i = 0; i < rules.Length; i++) { CfgRule cfgRule = rules[i]; if (pszSymbols.FromOffset(cfgRule._nameOffset) == rulename) { flag = (cfgRule.Export || stgInit || (!isImportedGrammar && (cfgRule.TopLevel || rulename == text))); break; } } if (!flag) { throw new ArgumentException(SR.Get(SRID.RecognizerRuleNotFoundStream, rulename)); } } else { rulename = text; } grammarOptions = (cfgHeader.GrammarOptions & GrammarOptions.TagFormat); } stream.Position = position; return(rulename); }
public PTEl(PTEType type, List <string> str, CfgRule rule) { this.type = type; this.str = str; this.rule = rule; }
public LLkTRow(FirstKEl u, CfgRule grule, List <FollowEl> F) { this.u = u; this.prod = grule; this.follow = F; }