#私も複雑な手順は別にスクリプトにしてMakefileから呼び出す派 http://www.clear-code.com/blog/2012/10/24.html だけどそもそもmakeは「依存関係の追跡ツール」であってたまたま複数コマンドが書けるってだけなんだから、シェルスクリプトと比較するって発想が変ではある。 ##誤変換がのこっているようです。
#直しました。mahalo〜
#+and for @code{json-object-handler}, it is one of the
+symbols @code{false}, @code{true} or @code{null}.
#ここ,jason-special-handler だと思います.
#fixed. mahalo.
#入力をパーズする関数のAPIについて考えてる。伝統的にはポートを受け取ってパーズ結果を返す、ってAPIだろうけれど、パーズに先読みが必要な場合が厄介だ。1文字までの先読みならpeek-charがあるのでポートに残しておけるが、それ以上の先読みがあると、先読みした文字をどうするかって話になる。捨ててしまうと、パーザが返ってきた後にそのポートからまだ読みたい時に困る。
#任意個の文字のプッシュバックを許すポートというのは実装できるけれど、使い勝手は悪い。パーザは先読み分の文字はどっかに取っといて、失敗時に押し戻す処理をいちいち書かないとならない。
#ところでlazy sequenceを使うとパーザがうんと書きやすくなり、parser.pegもlazy sequenceを使うように移行したのだが、この場合、いくつでも先読みできるんだけどいくつ先読みしたかがわからない。確かめる術がない。
#パーザのAPIとしては、ポートのことなど忘れて、LSeq -> (a, LSeq) のように「lazy sequenceを受け取り、結果とそっから先のlazy sequenceを返す」というふうに統一すれば綺麗だ。気になるのは伝統的なAPIと二本立てになるのが煩わしいのと、メタ情報(入力の位置とか)を後づけしたくなった時に綺麗にやる方法がないってことがある。