プログラミング Haskell 第8章 関数型パーサー その1

プログラミングHaskell

プログラミングHaskell

第8章は Haskell でパーサーを実装するという内容です。

  • パーサーの型について
    • Parser は文字列から構文木などを返す
    • 文字列を全部消費するとは限らない(続きを返す必要がある)
    • 失敗することもある(構文エラー)
    • パース結果が構文木とは限らない
    • 以上を受けてこんな型にしている(Maybe モナドとかはとりあえず使ってない)。空リストが失敗を示す。
type Parser a = String -> [(a, String)]
  • 基本的なパーサー
    • return v = \inp -> [(v, inp)]
    • failure = \inp -> []
    • item = \inp -> case inp of; -> ; (x:xs) -> [(x, xs)]
  • パーサーを連結する
    • (>>=) :: Parser a -> (a -> Parser b) -> Parser (a, b)

うん? この記号と動作は……。となんとなく道筋が見えてきたところで今日はおしまいです。じっくり読んでいきます。