1 <?xml version="1.0" encoding="ISO8859-1" ?> 2 <grammar xml:lang="en-us" version="1.0" root="ROOT"> 3 <meta name="word_penalty" content="40" /> 4 5 <rule id="ROOT" scope="public"> 6 <one-of> 7 <item> <ruleref uri="#DIAL_NANP_3"/> <tag>meaning=DIAL_NANP_3.CMD;</tag> </item> 8 <item> <ruleref uri="#DIAL_NANP_7"/> <tag>meaning=DIAL_NANP_7.CMD;</tag> </item> 9 <item> <ruleref uri="#DIAL_NANP_10"/> <tag>meaning=DIAL_NANP_10.CMD;</tag> </item> 10 <item> <ruleref uri="#DIAL_INTNL"/> <tag>meaning=DIAL_INTNL.CMD;</tag> </item> 11 <item> <ruleref uri="#CALL"/> <tag>meaning=CALL.CMD;</tag> </item> 12 <item> Call Voice Mail <tag>meaning='voicemail'</tag> </item> 13 <item> Redial <tag>meaning='redial'</tag> </item> 14 <item> Exit <tag>meaning='X'</tag> </item> 15 <item> Cancel <tag>meaning='X'</tag> </item> 16 <item> <ruleref uri="#OPEN"/> <tag>meaning=OPEN.CMD;</tag> </item> 17 </one-of> 18 </rule> 19 20 <rule id="DIAL_NANP_3"> 21 <item> Dial <tag>CMD='DIAL '</tag> </item> 22 23 <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item> 24 <item> 1 <tag>CMD=CMD+'1'</tag> </item> 25 <item> 1 <tag>CMD=CMD+'1'</tag> </item> 26 </rule> 27 28 <rule id="DIAL_NANP_7"> 29 <item> Dial <tag>CMD='DIAL '</tag> </item> 30 31 <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item> 32 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 33 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 34 35 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 36 <one-of> 37 <item> 38 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 39 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 40 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 41 </item> 42 <item> thousand <tag>CMD=CMD+'000'</tag> </item> 43 </one-of> 44 </rule> 45 46 <rule id="DIAL_NANP_10"> 47 <item> Dial <tag>CMD='DIAL '</tag> </item> 48 49 <!-- ignore leading 1 --> 50 <item repeat="0-1"> 1 </item> 51 52 <!-- accept either xxx or 'eight hundred' --> 53 <one-of> 54 <item> 55 <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item> 56 <item> <ruleref uri="#DIGIT08"/> <tag>CMD=CMD+DIGIT08.V</tag> </item> 57 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 58 </item> 59 <item> 8 hundred <tag>CMD=CMD+'800'</tag> </item> 60 </one-of> 61 62 <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item> 63 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 64 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 65 66 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 67 <one-of> 68 <item> 69 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 70 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 71 <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 72 </item> 73 <item> thousand <tag>CMD=CMD+'000'</tag> </item> 74 </one-of> 75 </rule> 76 77 <rule id="DIGIT09"> 78 <one-of> 79 <item> 0 <tag>V='0'</tag> </item> 80 <item> 1 <tag>V='1'</tag> </item> 81 <item> 2 <tag>V='2'</tag> </item> 82 <item> 3 <tag>V='3'</tag> </item> 83 <item> 4 <tag>V='4'</tag> </item> 84 <item> 5 <tag>V='5'</tag> </item> 85 <item> 6 <tag>V='6'</tag> </item> 86 <item> 7 <tag>V='7'</tag> </item> 87 <item> 8 <tag>V='8'</tag> </item> 88 <item> 9 <tag>V='9'</tag> </item> 89 </one-of> 90 </rule> 91 92 <rule id="DIGIT08"> 93 <one-of> 94 <item> 0 <tag>V='0'</tag> </item> 95 <item> 1 <tag>V='1'</tag> </item> 96 <item> 2 <tag>V='2'</tag> </item> 97 <item> 3 <tag>V='3'</tag> </item> 98 <item> 4 <tag>V='4'</tag> </item> 99 <item> 5 <tag>V='5'</tag> </item> 100 <item> 6 <tag>V='6'</tag> </item> 101 <item> 7 <tag>V='7'</tag> </item> 102 <item> 8 <tag>V='8'</tag> </item> 103 </one-of> 104 </rule> 105 106 <rule id="DIGIT29"> 107 <one-of> 108 <item> 2 <tag>V='2'</tag> </item> 109 <item> 3 <tag>V='3'</tag> </item> 110 <item> 4 <tag>V='4'</tag> </item> 111 <item> 5 <tag>V='5'</tag> </item> 112 <item> 6 <tag>V='6'</tag> </item> 113 <item> 7 <tag>V='7'</tag> </item> 114 <item> 8 <tag>V='8'</tag> </item> 115 <item> 9 <tag>V='9'</tag> </item> 116 </one-of> 117 </rule> 118 119 <rule id="DIAL_INTNL"> 120 <item> Dial Plus <tag>CMD='DIAL +';</tag> </item> 121 <item repeat="5-15"> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item> 122 </rule> 123 124 <rule id="CALL"> 125 <item> Call <tag>CMD='CALL '</tag> </item> 126 127 <item> <ruleref uri="#Names"/> <tag>CMD=CMD+Names.V</tag> </item> 128 129 <item repeat="0-1"> 130 <one-of> 131 <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_HOME --> 132 <item> at home <tag>CMD=CMD+' H'</tag> </item> 133 <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_MOBILE --> 134 <item> 135 <one-of> <item> at </item> <item> on </item> </one-of> 136 <one-of> <item> cell </item> <item> mobile </item> </one-of> 137 <tag>CMD=CMD+' M'</tag> 138 </item> 139 <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_WORK --> 140 <item> at work <tag>CMD=CMD+' W'</tag> </item> 141 <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_OTHER --> 142 <item> 143 <one-of> <item> at </item> <item> on </item> </one-of> 144 <item> other </item> 145 <tag>CMD=CMD+' O'</tag> 146 </item> 147 </one-of> 148 </item> 149 </rule> 150 151 <rule id="Names" scope="public"> 152 <item>__Names__</item> 153 </rule> 154 155 <rule id="OPEN"> 156 <item> Open <tag>CMD='OPEN ';</tag> </item> 157 <item> <ruleref uri="#Opens"/> <tag>CMD=CMD+Opens.V</tag> </item> 158 </rule> 159 160 <rule id="Opens" scope="public"> 161 <item>__Opens__</item> 162 </rule> 163 164 </grammar> 165