GrammarBuilder.Append Method (GrammarBuilder, Int32, Int32)


Appends a repeated grammar element to the current sequence of grammar elements.

Namespace:   System.Speech.Recognition
Assembly:  System.Speech (in System.Speech.dll)

public void Append(
	GrammarBuilder builder,
	int minRepeat,
	int maxRepeat


Type: System.Speech.Recognition.GrammarBuilder

The repeated grammar element to append.

Type: System.Int32

The minimum number of times that input matching the element defined by builder must occur to constitute a match.

Type: System.Int32

The maximum number of times that input matching the element defined by builder can occur to constitute a match.

The value of minRepeat must be greater than or equal to 0 and less than or equal to the value of maxRepeat.


When you append GrammarBuilder objects that contain SemanticResultValue or SemanticResultKeyinstances to a GrammarBuilder object, make sure you avoid creating duplicate semantic elements with the same key name or multiple semantic elements that could repeatedly modify the Value property of a SemanticValueobject. The speech recognizer can throw an exception if it encounters these circumstances. For more information about building a speech recognition grammar that contains semantic information, see Understanding SemanticResultValue and SemanticResultKey Objects.

The following example creates a speech recognition grammar for phrases such as "Call James at work" and "Call Anne on her cell phone", where the word "phone" is optional. GrammarBuilder and Choices objects are used to construct the grammar. The example highlights the use of the Append method.

public static Grammar CreatePhonePhrase()
  // Create alternatives for person names, locations, devices, and pronouns.
  Choices personChoice = new Choices(new string[] {"Anne", "James", "Mary", "Sam"});
  Choices locationChoice = new Choices(new string[] {"home", "work"});
  Choices deviceChoice = new Choices(new string[] {"home", "work", "cell"});
  Choices pronounChoice = new Choices(new string[] {"his", "her"});

  // Create a phrase for the receiving device, which optionally contains the word "phone".
  GrammarBuilder devicePhrase = new GrammarBuilder(pronounChoice);
  devicePhrase.Append("phone", 0, 1);

  // Create alternatives for phrases specifying a device or a location.
  GrammarBuilder atLocation = new GrammarBuilder("at");

  GrammarBuilder onDevice = new GrammarBuilder("on");

  Choices howChoice = new Choices(new GrammarBuilder[] {atLocation, onDevice});

  // Build the final phrase.
  GrammarBuilder callWho = new GrammarBuilder("Call");

  // Create the Grammar object.
  Grammar callGrammar = new Grammar(callWho);
  callGrammar.Name = "Call Grammar";

  return callGrammar;

.NET Framework
Available since 3.0
Return to top