grep などで使う正規表現は、文字列の中から文字のパターンを検索、置換するときに活用されている。
Parsec は、基本的にはそのような使い方を想定してはいないが、工夫すれば正規表現と同じ感覚で文字パターンを文字列から検索するのに使うことができる。このプログで紹介した Match.hs にそのための関数を定義してみた。ghci からこのファイルを import すれば、次の例のように正規表現を利用するのと同じ手軽さで Parsec を使うことができる。 前準備 C:\Users\******\Documnets>ghci Prelude> :l Match.hs [1 of 1] Compiling Match ( Match.hs, interpreted ) Ok, modules loaded: Match. *Match> 行の先頭に "apple" の文字列のある行を選び出す。 *Match> filter (match (string "apple")) ["apple juice", "bad apple"] ["apple juice"] 行中に "apple" の文字列のある行を選び出す。 *Match> filter (match (search (string "apple"))) ["apple juice", "bad apple"] ["apple juice","bad apple"] 'l' とその後に任意の3文字が続くパターンを検索する。 *Match> getMatch (search (do m <- string "l"; n <- count 3 anyChar; return (m++n))) "apple juice, bad apple" Just "le j" 行中の "apple" を "orange" に置換する。 *Match> map (replaceMatch (string "apple") "orange") ["apple juice", "bad apple"] ["orange juice","bad orange"] 正規表現よりかなり冗長になるが、Parsec のパターン記述機能を Haskell のプログラムの中で自由に利用することができるようになる。 また、Parsec のこのような利用の仕方をしているうちに、Parsec のパターン記述の方法に慣れてきて、プログラム言語のパーサの作成にも挑戦できるようになる。
by tnomura9
| 2011-12-01 00:23
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||