ブックマーク / anatoo.hatenablog.com (3)

  • PHPカンファレンス福岡2015で「PHPで学ぶ仮想マシン型正規表現エンジンの仕組み」という題で発表してきました #phpconfuk - id:anatooのブログ

    6/27に開催されたPHPカンファレンス福岡2015で「PHPで学ぶ仮想マシン型正規表現エンジンの仕組み」という題で発表してきました。 正規表現エンジンの実装は、大別するとDFA型とVM型の二種類あるのですが、今回のこの発表ではVM型の仕組みについて解説しました。 もともとこの話の元ネタは、数年前に読んだRegular Expression Matching: the Virtual Machine Approachという記事です。この記事を読んで、こんなに単純な仕組みで正規表現エンジンって実装できるのか!とちょっとした衝撃を受けて、その感動を伝えられればということで今回話しました。 ちょっと時間が足りず最後の方が早足になってしまって当日会場で話を聞いていた人にはわかりづらくなってしまいましたが、資料を一度ゆっくり見てもらえば多分理解できると思います。 PHPで学ぶ〜とか言いつつスライドに

    PHPカンファレンス福岡2015で「PHPで学ぶ仮想マシン型正規表現エンジンの仕組み」という題で発表してきました #phpconfuk - id:anatooのブログ
  • 正規表現ばかりに頼ってはいけない - id:anatooのブログ

    文字列のパースをする必要がある時、どんな文字列にでも何でもかんでも正規表現で処理しようとするエンジニアをたまに見かける。 正規表現は確かに文字列を扱うための強力な手段だが、万能ではない。正規表現の性質上、そもそもパースできない文法があるからだ。従ってそういうケースの時には正規表現ではなく別の方法を使ったほうが良い。正規表現を無理やり使っても、バグを埋め込んだり、メンテナンスが難しかったり、正しく文字列をパース出来なかったりで良いことはあまりない。 正規表現がパースできない文字列 正規表現が苦手とする文法で一番よく言われるのは、再帰的な構文を含む文法である。例えば、括弧つきの数式なんかがそうで、1+1 でも (1+1) でも ( (1+1) ) でも ( ( (1+1) ) ) でも ( ( ( ( 1+1) ) ) ) でも、という風にいくらでも入れ子にできる。正規表現では、こういった文字

    正規表現ばかりに頼ってはいけない - id:anatooのブログ
    trashtoy
    trashtoy 2015/04/28
    BNFを解釈して動的に parser を生成するようなライブラリがあったら良いなーとよく思う
  • PHP5.4のリポジトリに新たに[]による配列の文法が追加 - id:anatooのブログ

    今までPHPでは配列を書くのにarray()という記法を使う必要があったが、PHP5.4のリポジトリに新しい配列の文法が追加された。[]で囲むことで配列を表現することができるようになっている。連想配列についても同様。 add short array syntax as defined in https://wiki.php.net/rfc/shortsyntaxforarrays, 2nd solution using => only http://svn.php.net/viewvc?view=revision&revision=313641 以下、配列の新しい文法に関するテストケースを引用。 --TEST-- Testing array shortcut and bracket operator --FILE-- <?php $a = [1, 2, 3, 4, 5]; print_r(

    trashtoy
    trashtoy 2011/07/25
    やっときたか
  • 1