実際に何もせずにマッチツリーに物を挿入できるかどうか不思議でした。私が解決しようとしている問題はありません。実際に何も照合せずに名前付きキャプチャをマッチツリーに挿入できますか?
この例では、その一致がハッシュのキーであることを確認するトークンmarket
があります。私はそのハッシュの値を何とかマッチツリーに挿入しようとしていました。私はlong_market_string
と常に一致するトークンを持つことができたと思って、どういうわけかmarket
が何を探していたのかを見てください。
grammar OrderNumber::Grammar {
token TOP {
<channel> <product> <market> <long_market_string> '/' <revision>
}
token channel { <[ M F P ]> }
token product { <[ 0..9 A..Z ]> ** 4 }
token market {
(<[ A..Z ]>** 1..2) <?{ %Market_Shortcode{$0}:exists }>
}
# this should figure out what market matched
# I don't particularly care how this happens as long as
# I can insert this into the match tree
token long_market_string { <?> }
token revision { <[ A..C ]> }
}
それが作成されているようMatch
ツリーを台無しにはいくつか方法はありますか?
私は物事を反転何か行うことができます:
grammar AppleOrderNumber::Grammar {
token TOP {
<channel> <product> <long_market_string> '/' <revision>
}
token channel { <[ M F P ]> }
token product { <[ 0..9 A..Z ]> ** 4 }
token market {
(<[ A..Z ]>** 1..2) <?{ %Market_Shortcode{$0}:exists }>
}
token long_market_string { <market> }
token revision { <[ A..C ]> }
}
をしかし、そのような場合を処理しています。私は、任意の数のものを挿入することにもっと興味があります。
これは実際に私が求めているものに近いものではありません。そのすべては簡単です。私はトークンを持たないマッチツリーに他のものを挿入したい。 Matchオブジェクトには不変のビットがあるため、「ほとんど何もしない」ことはできません。 –
@briandfoy Intは不変オブジェクトです。トークンがメソッドの一種だと言ったとき、メソッドから継承され、たくさんのものが追加されます。あなたが定期的な方法であなた自身の束を自分で行う場合、あなたはトークンが行うことができるすべてを絶対に行うことができます。私は、ほとんど一人で行う必要のないことを行うために、ソースコードを一週間以上見ようとは考えていません。私はあなたが尋ねる前にこれを同じことを何度もやろうとしましたが、時間を費やして時間の価値があるとは思っていませんでした。 –
さて、私はすでにそれを知っていて、それについて議論していませんでした。あなたは同じことを試みたと言いました(私はあなたがそれをやり遂げることができなかったと推測していると思います)。しかし、あなた自身がやることは自明なことを私に信じさせているようにも聞こえます。そこにメッセージが混在しています。 –