タグ

2009年3月15日のブックマーク (4件)

  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
    lestrrat
    lestrrat 2009/03/15
  • acotie、どこいってもうたんや・・・

    1年前に入社したacotieは、全然仕事をしません。 blogには、うちには勿体ないような意気込みが書かれていたので採用しましたが、 ふたを開けてみたら、 帰宅したらいつまでたっても職場に出社しないし、 お願いしたプログラムを一ヶ月かかっても描き上げることができないし、 プレゼンを任せてもいい加減でYappoさんから大笑いされるし、 全く困ったもんなんです。 でもね、もう20を過ぎる彼女を首にしてしまったら、 次に雇ってくれるところはないんじゃないかと思って、我慢しています。 そんな彼女ですが、Perlはまるっきりだめでも、 実はPHPを任せたらピカイチってことに最近気付きました。 根気よく使っていれば、長所が見つかるもんです。 このように、うちはエリートの集まりではありません。 TKSKさんから、「この子、cojiさんとこで世話したってくれへんやろか」と 頼まれて仕方なく採用したり、公募

    acotie、どこいってもうたんや・・・
  • 正規表現でアトミックグループが高速になる理由 - edry(えどりぃ)の粋狂

    2009年2月28日 22:41 理論的に高速になる表現だとしても、実際に高速になるかはベンチマークで確かめる必要があります。 404 Blog Not Found:regexp - possessive quantifier (独占的|絶対最大)量指定子とは何か? '<img alt="backtrack" src="bt.png">' =~ /"([^\"]+)"/; と '<img alt="backtrack" src="bt.png">' =~ /"([^\"]++)"/; は、どちらもbacktrackを見つけますが、後者の方が高速です。 うーん。この例だと両方ともマッチするするから、ステートを破棄することで高速になるというのが分かりにくいのかも。 そこで、Perl 5.8.8 でベンチマークの例を挙げながら、アトミックグループでステートを破棄した事により高速になる理由について

    lestrrat
    lestrrat 2009/03/15
    正規表現奥が深すぎる
  • Perlの正規表現のバグ? (前編) - moriyoshiの日記

    「鬼車の[[:print:]]はPOSIX流じゃないらしい」でid:ockeghemさんやid:nihenさんと先週いろいろやりとりしてた中で、一つだけ解決していない問題があった。 utf8フラグが立っているかどうかでPOSIX文字クラスのマッチの挙動が変わるという件。 大変詳しい調査をありがとうございます。トラックバックのブログに書いたように、[:print:]の挙動は、Perlでもutf8フラグの有無でも変わってくるようです。[:print:]は実用できないなと思いました え?まじ?と思うも、一応Perlのコード例も出していたので検証しないわけにはいかない。以下のようなコードで試してみたが、utf8フラグが立っていない場合と同じ結果となり、再現しないのだ。 use encoding 'utf8'; for (split //, "\t\r\n a") { printf("%d:%d:%

    Perlの正規表現のバグ? (前編) - moriyoshiの日記
    lestrrat
    lestrrat 2009/03/15
    話がわかった。なるほどー