引数のパースはめんどー

  • hとか--hogeとか。

めんどーです。
ちなみに言語はC++っす。言語がいけないですか?


とてもとても} else if {するとか、数値に変換するとか、変換できなかったらエラーとか、文字じゃなくて数値指定しやがれぼけーって怒らないといけないとかとか、ぁぁめんどー。

getoptはイヤです。getoptだのgetopt_longだの突然optargだのだの、イヤっす。それにgetoptはそんなにお気楽に使えないっす。



というわけで何とかなりませんか!
# でも変なライブラリに依存するのはイヤっす



V-FIELDには、"$ cmd -hoge opt"(オプション付き)か"$ cmd -hoge"(単発型)のどちらかしかパースできないけど、そこそこ使いやすいパーサを実装してみた。

何が嬉しいかというと、数値を指定しないといけないところにヘンな文字があったら勝手に怒ってくれるし、intに変換してくれるし、おまけ機能でコメント付きのUsageを自動で表示してくれる。これ


が、V-FIELDで使う分には良かったけど、"$ cmd fuga -hoge opt opt"というのはパースできない。ここがダメ。



そんなこんなで、今イベントドリブンな引数パーサを作成中。XMLパーサのSAXみたいな。
ただ、イベントドリブンだけだと普通にめんどーになる可能性が大きいので、何か状態遷移できるような仕組みがほしい。

Javaだったら、状態遷移なんかは「なんとかデザインパターン」みたいなもので何とかするんだろうなぁ。
でもクラスが増えるのはイヤ。deleteしないといけないのはイヤ。引数パーサなんぞに気合い入れたくないし。

イベントドリブン引数パーサ + ステートマシンフレームワーク = お手軽引数パーサ? うーむ…