[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08790] problem on compiling empty regexp



 あべです。みなさんこんばんは。


 compile-regexp に空文字列を与えると nil を返すようです。

 具体的には
| (string-match "" "foo")
|   => nil
| 
| (string-match (compile-regexp "") "foo")
|   => 不正なデータ型です: nil: string
| 
| (compile-regexp "")
|   => nil
と云った様子で compile-regexp した場合としない場合とで挙動が違います。
# やっぱり空の正規表現なんて怪しげなものは使っちゃいけないんでしょうか。


 差し当たり .xyzzy で
| (setf (symbol-function '*compile-regexp)
|         #'compile-regexp
|       (symbol-function 'compile-regexp)
|         #'(lambda (regexp &optional (fold-p nil))
|             (declare (type string regexp))
|             (if (string= regexp "") ""
|               (*compile-regexp regexp fold-p))))
として回避しています。setf か psetf かで迷ったのですが取り敢えず動いています。


以上。

-----------------------------------
阿部 洋志 <hiro-abe@xxxxxxxxxxxxxxxxxx>
    -----------------------------------

Index Home