1 <?xml version="1.0" encoding="ISO8859-1" ?> 2 <grammar xml:lang="en-us" version="1.0" root="ROOT" xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd"> 3 <meta name="word_penalty" content="40" /> 4 <!-- 5 Lookup name grammar, this is a sample grammar that can recognize 6 lookup followed by a digit string or a name. Names can be followed 7 by a place (such as office, home, mobile). The return key value pairs 8 in two cases are shown below. 9 # parseStringTest.out -base lookup 10 )) parse ok (1 results) (lookup Wilson at office) (8) 11 {LOOKUP.PLACE : office} 12 {ROOT.M_P : office} 13 {meaning : office Wilson } 14 {NAMES.N : Wilson} 15 {LOOKUP.NAME : Wilson} 16 {ROOT.M_N : Wilson} 17 {PLACES.P : office} 18 {ROOT.M_T : } 19 --Done-- 20 ) parse ok (1 results) (lookup seven one) (7) 21 {ROOT.M_P : } 22 {DIGIT.V : 1} 23 {LOOKUP.TELN : 71} 24 {S.X : 71} 25 {meaning : 71} 26 {ROOT.M_N : } 27 {ROOT.M_T : 71} 28 --> 29 <rule id="ROOT" scope="public"> 30 <item> 31 <ruleref uri="#LOOKUP"/> 32 <tag>M_N=LOOKUP.NAME?LOOKUP.NAME:''; 33 M_P=LOOKUP.PLACE?LOOKUP.PLACE:''; 34 M_T=LOOKUP.TELN?LOOKUP.TELN:'';</tag> 35 </item> 36 </rule> 37 38 <rule id="LOOKUP"> 39 <item>lookup</item> 40 <one-of> 41 <item> 42 <ruleref uri="#NAMES"/> 43 <item repeat="0-1"> 44 <item>at</item> 45 <ruleref uri="#PLACES"/> 46 <tag>PLACE=PLACES.P</tag> 47 </item> 48 <tag>NAME=NAMES.N</tag> 49 </item> 50 <item> 51 <ruleref uri="#S"/> 52 <tag>TELN=S.X;</tag> 53 </item> 54 </one-of> 55 </rule> 56 57 <rule id="NAMES"> 58 <one-of> 59 <item> 60 Peter 61 <tag>N='Peter'</tag> 62 </item> 63 <item> 64 Wilson 65 <tag>N='Wilson'</tag> 66 </item> 67 <item> 68 Jessica 69 <tag>N='Jessica'</tag> 70 </item> 71 <item> 72 Janese 73 <tag>N='Janese'</tag> 74 </item> 75 <item> 76 John Martinez 77 <tag>N='John Martinez'</tag> 78 </item> 79 <item> 80 Jen Parker 81 <tag>N='Jen Parker'</tag> 82 </item> 83 <item> 84 Jennifer 85 <tag>N='Jennifer'</tag> 86 </item> 87 <item> 88 Elaine 89 <tag>N='Elaine'</tag> 90 </item> 91 <item> 92 David 93 <tag>N='David'</tag> 94 </item> 95 </one-of> 96 </rule> 97 98 <rule id="PLACES"> 99 <one-of> 100 <item>office <tag>P='office'</tag> </item> 101 <item> friends <tag>P='friends'</tag> </item> 102 <item> home <tag>P='home'</tag> </item> 103 <item> mobile <tag>P='mobile'</tag> </item> 104 </one-of> 105 </rule> 106 107 <rule id="S"> 108 <item repeat="1-"> 109 <ruleref uri="#DIGIT"/> 110 <tag>X=X?X:'';X=X+DIGIT.V;</tag> 111 </item> 112 </rule> 113 114 <rule id="DIGIT"> 115 <one-of> 116 <item> 117 zero 118 <tag>V='0'</tag> 119 </item> 120 <item> 121 oh 122 <tag>V='0'</tag> 123 </item> 124 <item> 125 one 126 <tag>V='1'</tag> 127 </item> 128 <item> 129 two 130 <tag>V='2'</tag> 131 </item> 132 <item> 133 three 134 <tag>V='3'</tag> 135 </item> 136 <item> 137 four 138 <tag>V='4'</tag> 139 </item> 140 <item> 141 five 142 <tag>V='5'</tag> 143 </item> 144 <item> 145 six 146 <tag>V='6'</tag> 147 </item> 148 <item> 149 seven 150 <tag>V='7'</tag> 151 </item> 152 <item> 153 eight 154 <tag>V='8'</tag> 155 </item> 156 <item> 157 nine 158 <tag>V='9'</tag> 159 </item> 160 </one-of> 161 </rule> 162 163 </grammar> 164