The task of parsing a file, or data of various types, is a common one for programmers. We already learned about Haskell's support for regular expressions back in the section called “Regular expressions in Haskell”. Regular expressions are nice for many tasks, but they rapidly become unwieldy, or cannot be used at all, when dealing with a complex data format. For instance, we cannot use regular exp
Parsec の使い方の実例がないかと検索していたら、つぎのページを見つけた。 Simple Parsec Example: HTMangL Parsec を使って Haskell の Birs-style の文書のうち、コード部分に HTML のタグをつけ、更に特殊文字もエスケープ表現に置き換えるというプログラムだ。Parsec の基本的な使い方がわかる上に、いろいろなテクニックが洒落ていて面白い。 実は、前回までの数回分の記事は、このプログラムを読みこなすための準備だった。 コード部分だけを抜き出したものを次に示す。 module Main where import Text.ParserCombinators.Parsec eol = newline <|> (eof >> return '\n') tilEOL = manyTill (noneOf "\n") eol codeLi
wvogel00のために、昔書いたParsecを使ったコードを載せてみます。コメントに書いてあるのはコードに直す前のEBNFです。 import Text.ParserCombinators.Parsec run :: Show a => Parser a -> String -> IO () run p input = case (parse p "" input) of Left err -> do putStr "parse error at " print err Right x -> print x --expr = factor ('+' factor | '-' factor)* expr :: Parser Float expr = do l <- factor rs <- many ((do char '+' n <- factor return $ (+) n ) <|
お台場のTOKYO CULTURE CULTUREで開かれたHaskellナイトというイベントで、ライトニングトーク「Haskellゴング」に出てでしゃべってきた。 Parsec 3活用事例: Keepalived構文チェッカ (Haskell Gong 2009)View more documents from ma0e. ソースコードはgithubで。 http://github.com/maoe/shiritori http://github.com/maoe/text-keepalived Parsec 3からモナド変換子の実装が入ったことで、パーザ内部でI/Oすることができるようになったため、include文のパーズが簡単になったというお話。text-keepalivedの方は仕事で使っています。アルバイトも募集しています。 Parsec 2に関する補足 id:kazu-yama
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く