Regexp::Lexerってやつを書いた
https://metacpan.org/pod/Regexp::Lexer
https://github.com/moznion/Regexp-Lexer
Perlの正規表現を解析したいなー,と思った時にまず目につくのはRegexp::Parserだと思うのですが,このモジュールは解釈できないメタ文字や構文が多い為,実用にあたってはかなり厳しいという印象があります (モンキーパッチなんかを当てまくると使えるかなって感じ).
ついでに言うと,メンテナのTODDR氏がここで言っているように,氏はこういった分野にあまり明るくないらしく,積極的なメンテナンスが成される可能性は高くありません.パッチを送ろうとも思いましたが,結構複雑なことをやっているモジュールなのでモチベーションがもげた……
で,Regexp::Parserで頑張るのつらいし,それほどもりもりで機能要らないから自分の欲しい機能だけ搭載したミニマルな解析器が欲しいよね〜ってなった時に,まあとにかく自分で書くしかねえかなーと思って,ひとまずその前段階としてRegexp::Lexerというモジュールをしたためました.
名前の通り,正規表現文字列 (正確にはregexp quotedな文字列) を食べて,それをトークン列に分割して返してくれる君です.
このモジュールが吐き出すトークン列を煮るなり焼くなりして自分だけの解析器を作って育てて戦わせれば良いのでは,という思想のもとに生まれました.
とは言えやはりパーザ実装があると便利なので,次はパーザを書きたいという気持ちでいっぱいですが,Regexp::Parserという名前空間を取られているのでどうしたもんかと悩んでいる今日このごろです.何か良い名前あったら教えて下さい.