Open inafact opened 3 years ago
確かにそうですね。具体的には「^」と「*」でしょうか。「v」と「x」でも大丈夫なように、P-Codeの方を拡張するだとか?(エイリアス的に)
実は地味に結構ぶつかっていて、P-Code的にクリティカルなのは既に挙げてもらっている ^
、*
以外にも
[
、-
、+
、(矩形波、加算減算。/[a-z]+/
などの表現とぶつかる).
(*0.5
などの演算。全ての文字を表すドットシンタックスとぶつかる)などがあります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
厳密にはまだありそうですが、randexp.js の使い方的に、JavaScriptでサポートしてる全ての文法をサポートしなくても良いかなとは思っています。
現状だと何だかんだで \
でエスケープするのが明示的に書き分けが出来て手っ取り早そうかなと。
エイリアス作ってしまうのもありかなとは思いますが、あとは、
#
のような感じで、何かしらのプレフィックスなどを付けることで、正規表現の文法を優先するかP-Codeの文法を優先するかのモードを切り替えれるようにするとかですかね。パッと思いつくものだと..
なるほど、確かに演算子や小数点もすべてアウトですね(汗)。となると、ここはへたにエイリアスでしのぐのではなく、稲福さんのいうように、 ・エスケープする ・文法自体の書き換えができるようにする の二本立てでいくのはよさそうですね。あと、モードも面白いアイデアですね!このあたり、考えること自体がけっこう楽しいかも:-P
一部のP-Codeの文法とJavaScriptの正規表現のトークンが重複しているので、
\
を入れないと展開・実行できない場合がある