title: How to add words to an already loaded grammar using System.Speech and SAPI 5.3
body: <p>Given the following code,</p>
  
  <pre><code>Choices choices = new Choices();
  choices.Add(new GrammarBuilder(new SemanticResultValue("product", "&lt;product/&gt;")));
  
  GrammarBuilder builder = new GrammarBuilder();
  builder.Append(new SemanticResultKey("options", choices.ToGrammarBuilder()));
  
  Grammar grammar = new Grammar(builder) { Name = Constants.GrammarNameLanguage};
  grammar.Priority = priority;
  
  _recognition.LoadGrammar(grammar);
  </code></pre>
  
  <p>How can I add additional words to the loaded grammar? I know this can be achieved both in native code and using the SpeechLib interop, but I prefer to use the managed library.</p>
  
  <p><strong>Update:</strong> What I want to achieve, is not having to load an entire grammar repeatedly because of individual changes. For small grammars I got good results by calling</p>
  
  <pre><code>_recognition.RequestRecognizerUpdate()
  </code></pre>
  
  <p>and then doing the unload of the old grammar and loading of a rebuilt grammar in the event:</p>
  
  <pre><code>void Recognition_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
  </code></pre>
  
  <p>For large grammars this becomes too expensive.</p>