プログラミングHaskell 8.4 連結

ひきつづきプログラミングHaskellをScalaで書き換えつつ読んでいきます。 おそらく、二つのパーサーを組み合わせる最も単純な方法は、一方の後に他方を適用することだろう。一番目のパーサーの返す出力文字列が、二番目のパーサーの入力文字列となる。 連結…

基本的なパーサー

プログラミングHaskellより。 ここで、他のパーサーを構築するのに利用する基本的なパーサー三つを定義しよう。 ちょっと本の表記から変えます。 returnが予約語なので、メソッド名をreturn -> succeedにします。 String => List[Char]への変換は明示的に行…

パーサーの型

プログラミングHaskellより。 でもScalaで書いてみます。 適切な構文木の型Treeが与えられたとすると、パーサーはString -> Treeを持つ関数として表現できる。 type Parser = String => Tree しかし、一般的にはパーサーがすべての文字列を使い切るとは限ら…

パーサーとは (1)

プログラミングHaskellより。 パーサーとは、文字列を取り、文字列の文法構造を表現する曖昧さのない構文木を返すプログラムである。 曖昧さをなくすってのが大事なんだろう。 たとえば、文字列 "2 * 3 + 4"が与えられたとき、数式のパーサーは以下のような…

パーサーを書けるようになりたい

パーサーを書けるようになりたい、と思いました。 JSONとかxmlとかcsvとか。 以下のようなことをフワ〜っと思っていました。 社会人になって2年半、もうプログラミング歴も同じだけ経ったから(やばい)、なにか動くものを作りたい。 全く新しいものを作るっ…