Planck という monadic parser combinator を公開しました

Planck: A Small Parser Combinator Library for OCaml

I have released Planck, a small monadic parser combinators for OCaml. It includes a proof of implementation: OCaml syntax lexer and a parser which create 100% identical AST as the original OCaml's lex+yacc, and available at https://bitbucket.org/camlspotter/planck .

http://camlspotter.blogspot.com/2011/05/planck-small-parser-combinator-library.html

詳しくは上の英文記事をお願いします。和訳するほど体力ありません。

基本的には Parsec という monadic なパーサーライブラリがあるという事を聞いて、それをヒントに適当に作ってみたらやっぱり Parsec になった、という事です。私は Haskell の人達より慎ましいので(ここ笑うところですよ?) Parsec などという大風呂敷を拡げるのは恥ずかしいから、慎ましく Planck にしました。これ以上慎ましく出来ませんw (なんだかこのごろプランク長より小さいスケールの事象が起っている事が確認されつつあるようですね。良く知りませんが。

で、じゃあ parser combinator 作ってどうするかって思いつかなかったので OCaml の文法の lexer と parser を Planck で書いてみました。まあ、ともかく、身の回りにある OCaml ソースコードを片っ端からパースして、オリジナルのパーサと同じ結果が出てきているので、それなりに成功した、と言えるでしょう。速度はめちゃくちゃ遅いです。百倍程度遅い。その辺りは未来の OCaml に期待です。非常に改善される余地があり、OCamlPro な人々が今頑張っています。

まあ、真面目に早いパーサー作りたいなら lex+yacc がやはり鉄板ですよ。内部で何が起っているのかイマイチわかりませんがね。lex+yacc 勉強したくない、とか、同一言語内で引篭もっていたい、だから parser combinator、だとしたら、甘えです。というか、はじめのほうはフフンガフーン、かも知れんけど、文法が複雑になって収集つかなくなってからから泣いてもしりませんでー。