grep-ruby-token

vzvu3k6k/grep-ruby-token

uu59のメモ | git-grep-token-ruby作った(けど低品質)が便利そうだったのでparserでやってみた。

GitHubに上げたけど誰も見てないだろうと思ってgit push -fをバシバシ使ってたら、なかったことにしたコミットのほうにリンクされて冷や汗が出た。

オリジナルのgit-grep-token-rubyではripperを使ってコードをパースしているのだが、ripperから出力される構文木はやや複雑で扱いづらいところがある。Rubyのコードをパースするライブラリはripperの他にもいくつかあり、parserというシンプルすぎる名前のライブラリが一番後発で使いやすそうだったのでこれを使うことにした。調べた内容についてはRubyのコードをパースするライブラリというタイトルでまとめた。内容が浅すぎてあまりまとまってない。

parserは扱いやすいASTを出力してくれるが、複雑なコードではパースが失敗することがある。ripperを使ってparser式の簡潔なASTを生成したほうが楽なのではないかとも思うが、それはparserの作者も考えたはずで、Unless you’re implementing something that obeys the garbage-in garbage-out rule, Ripper isn’t very useful. To make it worse, there isn’t a cross-platform gemification of Ripper, or at least I was unable to find one.というあたり、特に後者が許容できなかったのだろうか。

関連