私は自己変更ルールを調べており、セマンティクスとは正確には何なのか、そしてそれらがどのように機能するのか疑問に思っています。これはかなり幅広い質問ですが、具体的な「これを行うにはどうすればよいか」という質問を使用して、より焦点を絞った質問にします。 (^(64) は小文字の「d」の 16 進 ASCII であるため、検出されません)
rule: ["a" "b" (insert find rule "^(64)" "c" probe rule) "d" "e"]
parse "abcde" rule
それを実行すると、次のようになります (Rebol と Red の両方で):
["a" "b" (insert find rule "d" "c" probe rule) "c" "d" "e"]
== false
ルールは更新されたようで、かなり「安全に見える方法」で更新されました (安全と思われるものがある場合)。より邪悪なバージョンがあります:
rule: ["a" "b" (clear rule probe rule) "d" "e"]
parse "abcde" rule
Rebol と Red の両方で:
[]
== false
どのようにクラッシュしないのか、私はちょっと混乱しています。しかし、それが何らかの形で防弾されていると仮定すると、最初の例を機能させる方法はありますか?