我必须认识到一些替代规则,但我不知道如何进行互斥。 例如,如果我想识别“播放”,“停止”或“设置1”,“设置2”,我该怎么办?我尝试过类似的东西,但是当我不需要数字时它无法识别(例如,“开始2”被正确识别,但是我不想这样做。)
<grammar version="1.0" tag-format="semantics/1.0" xml:lang="en-US" root="main">
<rule id="main">
<ruleref uri="#actions"/>
<ruleref uri="#numbers"/>
</rule>
<rule id="actions">
<item repeat="0-1">
<one-of>
<item>play</item>
<item>stop</item>
<item>set</item>
</one-of>
</item>
</rule>
<rule id="numbers">
<item repeat="0-1">
<one-of>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>7</item>
<item>8</item>
<item>9</item>
</one-of>
</item>
</rule>
</grammar>
答案 0 :(得分:0)
只是我发现如果我把
<item>play <ruleref special="GARBAGE"/></item>
<item>stop <ruleref special="GARBAGE"/></item>
<item>set <ruleref special="GARBAGE"/><ruleref uri="#numbers"/></item>
设置后调用id引用只需“set 1”,“set 2”,但不接受“start 1”,因为名称后面没有引用。