使用 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令牌?我可以预处理出该令牌或将其折叠到上面吗?或者,编写一个完全不需要它的更好的构造?