F# Advent Calendar 2017の4日目の記事です。 NGK2017B昼の部でパーサーコンビネーターについてLTしてきたので、その内容について書きます。 ただし、内容は大幅に加筆修正しています。 PCさえあればいい。 from bleis tift 導入 世の中にはパースすべきものであふれています。 例えば、下記のようなものがあります。 ログ 設定ファイル ミニ言語(DSL) プログラミング言語 構造を持ったものはそこら中にあります。 これらを処理するためにどうすればいいでしょうか。 一つの方法として、正規表現を使うというものがあります。 しかし、(本来の)正規表現ではネストする文法などは扱えません。 拡張機能として、ネストする文法が扱えるようになっているような処理系もあります。 しかし、そもそもそんな複雑な正規表現には近寄りたくないですよね。 では、文字列操作関数を駆使して