この記事は、F# Advent Calendar 2011 6日目の記事です。 構文解析に使うライブラリはたくさんありますが、今回はFParsecを取り上げます。 FParsec は Haskell の Parsec というパーサコンビネータの F# 実装です。 僕の考える文法 F#を使っていて、「F#の文法じゃ僕の思うDSLを表現できない」って思う事が良くありませんか? 内部DSLを頑張るのも結構ですが、どうしても格好悪くなってしまいますよね。 そういう時は、迷わず外部DSLを作ってしまいましょう。 そして、DSLの文法を考えているとき、どうしても実装したい機能が一つありますよね。F#にもあるオフサイドルールです。 今時、閉じタグ、閉じ括弧なんてかっこ悪い! でも、オフサイドルールって実装するのが面倒そうじゃないですか? どうやって作ればいいのでしょうか? 例題 こういう入力を、 par