Parsec のパーサは、プログラム言語の構文解析が目的なので、パーサは文字列の先頭から始まるパターンにしかマッチしない。しかし、正規表現のように文字列の中ほどのパターンにマッチしてくれるパーサがないと不便だ。そこで、パーサ expr が文字列の中ほどにあってもマッチするようなパターンをつくるパーサ・コンビネータ search を作ってみた。定義は次のようになる。
ghci> let search expr = try (expr) <|> do {anyChar; search expr} 実行例: Prelude> :m Text.ParserCombinators.Parsec Prelude Text.ParserCombinators.Parsec> :set prompt "ghci> " ghci> let search expr = expr <|> do {anyChar; search expr} ghci> parseTest (search (string "world")) "hello, world" "world" ghci> parseTest (search (char 'w')) "hello, world" 'w' ghci> parseTest (search (string "nothing")) "hello, world" parse error at (line 1, column 13): unexpected end of input これで、安心して正規表現から Parsec へ移行できる。
by tnomura9
| 2011-11-29 04:43
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||