IRC Protocol Parser を書いた

http://tokuhirom.github.com/nanoircparser/

C++ で 1ファイルでうごく IRC の protocol parser を書いたので github にアップしておきました。

IRC のクライアントライブラリは、イベントのハンドリングが主で、ライブラリになっていなくても手でくみたてればわりと十分だったりするので、面倒な protocol parser の部分だけさくっとかいてみました。

ベンチマークはとっていませんが、速度はそれなりにでてるんじゃないかとおもいます。client side で気軽にうごかすボット、みたいなシーンを想定しているので、わりと富豪的な実装になっていますけれど。

今回、工夫した点としては re2c を利用してパーズしてます。このおかげで非常に見通しがいいコードになってます。RFC にのっている BNF のほとんどそのままなので、よみやすいんじゃないかとおもいます。re2c つかってみたかっただけなので、もっといい方法があるのであれば、それはそれで。

IRC ボットを C++ で書きたいなあ、なんていう人が世界にどれだけ存在しているのかは知らないが、そういう人には役にたつのではないかとおもいます。

僕はそんなことしてる人、一人ぐらいしか思いつきませんが、たぶん世の中はひろいので意外と存在するのではないでしょうか。

なにがいいたいかというと、これと libuv をくみあわせると、C++ で簡単に IRC ボット書けるはずだよ、ということです。