前記事と似たような話。 プログラミングHaskellの第8章で紹介されているパーサコンビネータと同じようなことができるfnparseというライブラリがClojureにも存在する。パーサコンビネータと言えばScalaのライブラリ(コップ本*1 31章)にもあるが、どれも似たような感じのものだ。 プログラミングHaskell 作者: Graham Hutton,山本和彦出版社/メーカー: オーム社発売日: 2009/11/11メディア: 単行本(ソフトカバー)購入: 14人 クリック: 503回この商品を含むブログ (115件) を見る Scalaスケーラブルプログラミング[コンセプト&コーディング] (Programming in Scala) 作者: Martin Odersky,Lex Spoon、Bill Venners,羽生田栄一,長尾高弘出版社/メーカー: インプレスジャパン発売日
CPAN モジュールを見て回っている限りでは Perl では構文解析子ジェネレータを使うまでもなく、LL(1) 文法で楽に構文を記述できる入れ子括弧テキストや、XML、JSON 程度なら、Perl で直書きする方がポピュラーな気がします。Ruby なら、LALR(1) 文法対応のコンパイラ・ジェネレータ Racc を使うのが楽でしょう。ANTLR は Python 優遇で、Perl5 と Ruby ポートは進んでいない印象を受けてますが、今はどうなのでしょう。 ⇒ Leo's Chronicle: 正規表現に見切りをつけるとき 正規表現の能力を超えるデータはどう扱えばいいのか?一番のお勧めは、ANTLRを使って字句解析(lexer)、構文解析(parser)するプログラムを生成する方法です。一昔前なら、lex/yacc、flex/bison, JavaCCなどしか選択肢がなかったのですが、
JSON::Hatchet の構文解析子 - Tociyuki::DiaryのJSONパーサがすっきりと書けていたのものだから,ちょっとうちもJSONパースしたくなってので書いてみました.といってもLL構文のパーサを1から書くのも芸がない感じだったので.Parse::RecDescentというCPANモジュールを使ってJSONのパーシングをしてみました. Parse::RecDescentはその名のとおり,汎用の再帰下降型パーサです.LL(1)文法にのっとっていれば,パースが可能です.*1 id:tociyukiさんがの記事にあるBNFを流用させてもらい,JSONのパーサを書くと以下のようになりました. このように,BNFっぽいものを記述するだけでパースを行うことができてお手軽です.パターンとして正規表現を書くこともできて,スキャナーに相当することもやってくれてます. 構文規則に合わせてパ
Racc は Ruby で使えるパーサジェネレータです。これを使うと自分用のプログラム言語を Ruby で記述するのも夢ではありません。しかし、使い方がもう1つ分かりません。ところが、配布パッケージに添附してある calc.y を利用すると、なんとなく使い方のコツが分かるのに気づきました。Racc のダウンロードはここからできます。calc.y は配布パッケージの racc-1.4.5-all/packages/racc/sample/ の中にあります。 calc.y をコンパイルする 最初に calc.y から Racc が何を作ることができるかを見るために、calc.y を Racc でコンパイルしてみましょう。この場合ターゲットファイルの名前を calc.rb にしたいので -o オプションをつけてコンパイルします。 $ racc -o calc.rb calc.y 作成された ca
Hpricotは Ruby用の HTML パーサです。スキャン部分は C 言語で書かれていて高速に動作します。 HTMLの解析や書き換えに威力を発揮する便利なライブラリです。 rubygemsを使うのが簡単です。 # gem install hpricot すると以下のようにプラットフォームを聞いてきます。Unix系OSであれば 1 を、mswin32 であれば 2 を選びます。 Select which gem to install for your platform (i386-freebsd6) 1. hpricot 0.4 (ruby) 2. hpricot 0.4 (mswin32) 3. Cancel installation コンパイルが始まり、インストールが行われます。 Building native extensions. This could take a while.
#blognavi このサイトでは最終的にHaskellで[[KISSローダー>http://www.kiss-wkp.com/]]を作るという野望があるわけで。 今回は、コンフィグファイルの読み込みで使うであろう、Parsecに手を付けてみました。 [[Parsecのサイト>http://www.cs.uu.nl/~daan/parsec.html]] Parsecを使えば簡単にLL(n)文法のテキストファイルを簡単に読み込めるようになるらしいです。(理論的なことはよくわかってない) 自分は、上記のサイトのparsec-2.0.zip をダウンロードしてきたあと、Hugsの作業フォルダにTextフォルダ以下を展開しました。こうすればとりあえずは使えるようになります。 (詳しくはHugsやGHCのマニュアルを読んでください) -Parsecの特徴 Yacc+LexやJavaCCが「文法ファ
本文書は次に掲げる URL で示される文書の部分的な邦訳です。 http://www.cs.uu.nl/people/daan/download/parsec/parsec.html Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@cs.uu.nl, http://www.cs.uu.nl/~daan Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く