DamianConwayの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