【发布时间】:2010-06-15 16:34:20
【问题描述】:
使用 Damian Conway 的 Regexp::Grammars,我正在尝试匹配不同的平衡引用('foo'、"foo",但不是 'foo")机制——例如括号、引号、双引号和双美元。这是我目前正在使用的代码。
<token: pair> \'<literal>\'|\"<literal>\"|\$\$<literal>\$\$
<token: literal> [\S]+
这通常可以正常工作,让我可以这样说:
<rule: quote> QUOTE <.as>? <pair>
我的问题是如何修改输出,以排除 pair 令牌的针符号?
{
'' => 'QUOTE AS \',\'',
'quote' => {
'' => 'QUOTE AS \',\'',
'pair' => {
'literal' => ',',
'' => '\',\''
}
}
},
在这里,显然不希望在引用和literal 值之间有pair。有没有更好的方法来匹配'foo'、"foo" 和$$foo$$,有时甚至是( foo ),而不必每次都创建一个不必要的pair 令牌?我可以预处理该令牌或将其折叠到上面吗?或者,编写一个完全不需要它的更好的构造?
【问题讨论】:
标签: regex perl grammar regexp-grammars