使用 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' => ',',
'' => '\',\''
}
}
},
在这里,显然不希望pair
在报价和literal
价值之间存在任何关系。有没有更好的方法来匹配'foo'
, "foo"
, 和$$foo$$
, 有时可能( foo )
不需要每次都创建一个不必要的pair
令牌?我可以预处理出该令牌或将其折叠到上面吗?或者,编写一个完全不需要它的更好的构造?