The code sample below constructs a Grammar which recognizes either of two phrases: "Make background [color]" or "Configure background as [color]" using a explicit creation of and implicit conversion to GrammarBuilder instances.
The explicit construction of a GrammarBuilder object from a [System.String] instance is highlighted in the example code below.
private Grammar CreateGrammarBuilderRGBSemantics(params int[] info) {
//Create a set of choices, each a lookup from a color name to RGB
//Choices constructors do not take SematicResultValue, so cast SematicResultValue to GramarBuilder
Choices colorChoice = new Choices();
foreach (string colorName in System.Enum.GetNames(typeof(KnownColor))) {
colorChoice.Add((GrammarBuilder)
(new SemanticResultValue(colorName, Color.FromName(colorName).ToARGB())));
}
GrammarBuilder choiceBuilder = new SemanticResultKey("RGB", colorChoice);
//Create two intermediate grammars with introductory phrase and the color choice
GrammarBuilder makeBackgroundBuilder = "Make background";
//Uses implicit conversion of SystemString to GrammarBuilder
makeBackgroundBuilder.Append(choiceBuilder);
GrammarBuilder configureBackgroundBuilder = new GrammarBuilder("Configure background as");
//Construct GrammarBuilder from string.
configureBackgroundBuilder.Append(new SemanticResultKey("RGB", colorChoice));
//Create the final grammar, which recognizes either intermediate grammar
Grammar grammar = new Grammar(new Choices(makeBackgroundBuilder, configureBackgroundBuilder));
/
grammar.Name = "Make Background /Configure background as";
return grammar;
}