<?xml version="1.0" encoding="ISO8859-1" ?>
<grammar xml:lang="en-us" version="1.0" root="ROOT">
<meta name="word_penalty" content="40" />

<rule id="ROOT" scope="public">
  <one-of>
    <item> <ruleref uri="#DIAL_NANP_3"/> <tag>meaning=DIAL_NANP_3.CMD;</tag> </item> 
    <item> <ruleref uri="#DIAL_NANP_7"/> <tag>meaning=DIAL_NANP_7.CMD;</tag> </item> 
    <item> <ruleref uri="#DIAL_NANP_10"/> <tag>meaning=DIAL_NANP_10.CMD;</tag> </item> 
    <item> <ruleref uri="#DIAL_INTNL"/> <tag>meaning=DIAL_INTNL.CMD;</tag> </item>
    <item> <ruleref uri="#CALL"/> <tag>meaning=CALL.CMD;</tag> </item>
    <item> Call Voice Mail <tag>meaning='voicemail'</tag> </item>
    <item> Redial <tag>meaning='redial'</tag> </item>
    <item> Exit <tag>meaning='X'</tag> </item>
    <item> Cancel <tag>meaning='X'</tag> </item>
    <item> <ruleref uri="#OPEN"/> <tag>meaning=OPEN.CMD;</tag> </item>
  </one-of>
</rule>

<rule id="DIAL_NANP_3">
  <item> Dial <tag>CMD='DIAL '</tag> </item>
  
  <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item>
  <item> 1 <tag>CMD=CMD+'1'</tag> </item>
  <item> 1 <tag>CMD=CMD+'1'</tag> </item>
</rule> 

<rule id="DIAL_NANP_7">
  <item> Dial <tag>CMD='DIAL '</tag> </item>
  
  <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item>
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  <one-of>
    <item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
    </item>
    <item> thousand <tag>CMD=CMD+'000'</tag> </item>
  </one-of>
</rule> 

<rule id="DIAL_NANP_10">
  <item> Dial <tag>CMD='DIAL '</tag> </item>
  
  <!-- ignore leading 1 -->
  <item repeat="0-1"> 1 </item>
  
  <!-- accept either xxx or 'eight hundred' -->
  <one-of>
    <item>
      <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item>
      <item> <ruleref uri="#DIGIT08"/> <tag>CMD=CMD+DIGIT08.V</tag> </item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
    </item>
    <item> 8 hundred <tag>CMD=CMD+'800'</tag> </item>
  </one-of>
  
  <item> <ruleref uri="#DIGIT29"/> <tag>CMD=CMD+DIGIT29.V</tag> </item>
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  
  <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
  <one-of>
    <item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
      <item> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
    </item>
    <item> thousand <tag>CMD=CMD+'000'</tag> </item>
  </one-of>
</rule> 

<rule id="DIGIT09">
  <one-of>
    <item> 0 <tag>V='0'</tag> </item>
    <item> 1 <tag>V='1'</tag> </item>
    <item> 2 <tag>V='2'</tag> </item>
    <item> 3 <tag>V='3'</tag> </item>
    <item> 4 <tag>V='4'</tag> </item>
    <item> 5 <tag>V='5'</tag> </item>
    <item> 6 <tag>V='6'</tag> </item>
    <item> 7 <tag>V='7'</tag> </item>
    <item> 8 <tag>V='8'</tag> </item>
    <item> 9 <tag>V='9'</tag> </item>
  </one-of>
</rule> 

<rule id="DIGIT08">
  <one-of>
    <item> 0 <tag>V='0'</tag> </item>
    <item> 1 <tag>V='1'</tag> </item>
    <item> 2 <tag>V='2'</tag> </item>
    <item> 3 <tag>V='3'</tag> </item>
    <item> 4 <tag>V='4'</tag> </item>
    <item> 5 <tag>V='5'</tag> </item>
    <item> 6 <tag>V='6'</tag> </item>
    <item> 7 <tag>V='7'</tag> </item>
    <item> 8 <tag>V='8'</tag> </item>
  </one-of>
</rule> 

<rule id="DIGIT29">
  <one-of>
    <item> 2 <tag>V='2'</tag> </item>
    <item> 3 <tag>V='3'</tag> </item>
    <item> 4 <tag>V='4'</tag> </item>
    <item> 5 <tag>V='5'</tag> </item>
    <item> 6 <tag>V='6'</tag> </item>
    <item> 7 <tag>V='7'</tag> </item>
    <item> 8 <tag>V='8'</tag> </item>
    <item> 9 <tag>V='9'</tag> </item>
  </one-of>
</rule> 

<rule id="DIAL_INTNL">
  <item> Dial Plus <tag>CMD='DIAL +';</tag> </item>
  <item repeat="5-15"> <ruleref uri="#DIGIT09"/> <tag>CMD=CMD+DIGIT09.V</tag> </item>
</rule>

<rule id="CALL">
  <item> Call <tag>CMD='CALL '</tag> </item>
  
  <item> <ruleref uri="#Names"/> <tag>CMD=CMD+Names.V</tag> </item>
  
  <item repeat="0-1">
    <one-of>
      <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_HOME -->
      <item> at home <tag>CMD=CMD+' H'</tag> </item>
      <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_MOBILE -->
      <item>
        <one-of> <item> at </item> <item> on </item> </one-of>
        <one-of> <item> cell </item> <item> mobile </item> </one-of>
        <tag>CMD=CMD+' M'</tag>
      </item>
      <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_WORK -->
      <item> at work <tag>CMD=CMD+' W'</tag> </item>
      <!-- corresponds to android.provider.Contacts.People.Phones.TYPE_OTHER -->
      <item>
        <one-of> <item> at </item> <item> on </item> </one-of>
        <item> other </item>
        <tag>CMD=CMD+' O'</tag>
      </item>
    </one-of>
  </item>
</rule> 

<rule id="Names" scope="public">
  <item>__Names__</item>
</rule>

<rule id="OPEN">
  <item> Open <tag>CMD='OPEN ';</tag> </item>
  <item> <ruleref uri="#Opens"/> <tag>CMD=CMD+Opens.V</tag> </item>
</rule>

<rule id="Opens" scope="public">
  <item>__Opens__</item>
</rule>

</grammar>