0

我必须承认一些替代规则,但我不知道如何进行互斥。比如我要识别“play”、“stop”,或者“set 1”、“set 2”,我该怎么做?我尝试了类似的方法,但是当我不需要数字时它无法识别(例如,“start 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>
4

1 回答 1

0

只是我发现如果我把

<item>play <ruleref special="GARBAGE"/></item>
<item>stop <ruleref special="GARBAGE"/></item>      
<item>set <ruleref special="GARBAGE"/><ruleref uri="#numbers"/></item>

在 set 之后调用 id 引用将只采用“set 1”、“set 2”,但不接受“start 1”,因为名称后面没有引用。

于 2013-05-14T14:23:56.370 回答