从Regexp::Grammars
文档中:
标记和规则之间的区别在于,标记完全按照普通 Perl 正则表达式处理其中的任何空格。也就是说,如果
/x
修饰符有效,则忽略标记中的空白序列,否则匹配相同的空白字符序列(如果/x
无效)。在规则中,大多数空格序列被视为匹配隐式子规则,该子规则
<.ws>
自动预定义为匹配可选空格(即\s*
)。...
换句话说,规则如下:
<rule: sentence> <noun> <verb> | <verb> <noun>
相当于添加了非捕获空白匹配的标记:
<token: sentence> <.ws> <noun> <.ws> <verb> | <.ws> <verb> <.ws> <noun>
有没有办法让规则忽略领先的隐含<.ws>
?在上面的示例中,它相当于:
<token: sentence> <noun> <.ws> <verb>
| <verb> <.ws> <noun>