言い換えて...
関数/条件を解析する最善の方法を知りたいです。したがって、次のようなものがある場合、[if {a} is {12 or 34}][if {b} not {55}] show +c+ [/if][/if]
これは条件内の条件です。正規表現のみではこれを行うことができないようです。
元の質問
今のところ、アクション スクリプトを使用していくつかのコマンドを解析する非常に簡単な方法があります。
タグ、コマンド、オペランドを見つけるために正規表現を使用しています...
+key_word+ // any text surrounded by +
[ifempty +val_1+]+val_2+[/ifempty] //simple conditional
[ifisnot={`true,yes`} +ShowTitle+]+val_3+[/ifisnot] // conditional with operands
私の現在のアルゴリズムは、一致しない場合でも、開始タグ[**]
と最初の終了タグを一致させます。[/**]
つまり、次のようなことができなかったことを意味します[ifempty +val_2+][ifnotempty +val_2]+val_3+[/ifnotempty]+val_4+[/ifempty]
-基本的に、ある条件を別の条件の中に入れます。
この正規表現に基づいて文字列を文字列の配列に分割するインライン解析方法を使用しています\[[^\/](?:[^\]])*\](?:[^\]])*\[\/(?:[^\]])*\]
より堅牢な解析規則/標準を使用して、より堅牢なアルゴリズムを提案できる人はいますか? 特にas3の場合。