/** * Commit changes to all loaded grammars and all changes of grammar since * the last commitChange * * @throws JSGFGrammarParseException * @throws JSGFGrammarException */ public virtual void CommitChanges() { try { if (LoadGrammar) { if (Manager == null) { GetGrammarManager(); } _ruleGrammar = LoadNamedGrammar(GrammarName); LoadImports(_ruleGrammar); LoadGrammar = false; } Manager.LinkGrammars(); RuleStack = new RuleStack(); NewGrammar(); FirstNode = CreateGrammarNode("<sil>"); GrammarNode finalNode = CreateGrammarNode("<sil>"); finalNode.SetFinalNode(true); // go through each rule and create a network of GrammarNodes // for each of them foreach (String ruleName in _ruleGrammar.GetRuleNames()) { if (_ruleGrammar.IsRulePublic(ruleName)) { String fullName = GetFullRuleName(ruleName); GrammarGraph publicRuleGraph = new GrammarGraph(this); RuleStack.Push(fullName, publicRuleGraph); JSGFRule rule = _ruleGrammar.GetRule(ruleName); GrammarGraph graph = ProcessRule(rule); RuleStack.Pop(); FirstNode.Add(publicRuleGraph.StartNode, 0.0f); publicRuleGraph.EndNode.Add(finalNode, 0.0f); publicRuleGraph.StartNode.Add(graph.StartNode, 0.0f); graph.EndNode.Add(publicRuleGraph.EndNode, 0.0f); } } PostProcessGrammar(); if (Logger.Level == LogLevel.All) { DumpGrammar(); } } catch (UriFormatException mue) { throw new IOException("bad base grammar URL " + BaseUrl + ' ' + mue); } }
/** * Commit changes to all loaded grammars and all changes of grammar since * the last commitChange * * @throws JSGFGrammarParseException * @throws JSGFGrammarException */ public override void CommitChanges() { try { if (LoadGrammar) { if (Manager == null) { GetGrammarManager(); } LoadXML(); LoadGrammar = false; } RuleStack = new RuleStack(); NewGrammar(); FirstNode = CreateGrammarNode("<sil>"); var finalNode = CreateGrammarNode("<sil>"); finalNode.SetFinalNode(true); // go through each rule and create a network of GrammarNodes // for each of them foreach (var entry in _rules) { var publicRuleGraph = new GrammarGraph(this); RuleStack.Push(entry.Key, publicRuleGraph); var graph = ProcessRule(entry.Value); RuleStack.Pop(); FirstNode.Add(publicRuleGraph.StartNode, 0.0f); publicRuleGraph.EndNode.Add(finalNode, 0.0f); publicRuleGraph.StartNode.Add(graph.StartNode, 0.0f); graph.EndNode.Add(publicRuleGraph.EndNode, 0.0f); } PostProcessGrammar(); } catch (UriFormatException mue) { throw new IOException("bad base grammar URL " + BaseUrl + ' ' + mue); } }