タグ

perlとppiに関するwkbyshnbtkのブックマーク (5)

  • Adam Kennedy on PPI - himazu blog

    blog.bulknews.netで知ってから(宮川さんに感謝)Perlcastというポッドキャストを聞いていて、その中の表題のインタビュー(25分間)を聞いた。Perlで書かれたPerlの文法解析(parsing)モジュールであるPPIの作者へのインタビューである。表題のリンク先ページの始めのほうの「interview」というリンクからMP3ファイルがダウンロードできる。 Perlには「only perl can parse Perl」*1というモットーがあることもあって、Perlの字句解析および文法解析をPerlで記述したものは長らくなかった。PPIはそれをかなりの精度で実現している。インタビューの中で興味深いと思ったのは以下の点である。 現在のものは3つ目の実装 PPIは2回ほぼ一から書き直していて、今のものは最初から数えて3回目に書いたものである。最初の実装は正規表現をベースにして

    Adam Kennedy on PPI - himazu blog
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • PPI って何なんだろう - 理系学生日記

    スクリプト読んでたら,PPI::Document ってモジュールが使われていてチョー気になったもんだから調べてみました. Nothing but perl can parse Perl そもそも perl なしに Perl を解析できないかという試みは次々に試され,そして失敗していったそうです.あまりに Perl の文法が複雑で動的なもんだからってのがその大きな原因みたいですね. begin{} ブロックなんてのは,解析とともに普通実行も伴うわけで,"実行なし" に Perl のソースコードを解析するのは至難の技だったりします.また,以下のような問題も発生してしまいます. @result = (dothis $foo, $bar); # Which of the following is it equivalent to? @result = (dothis($foo), $bar); @

    PPI って何なんだろう - 理系学生日記
  • PPIの簡単な使い方 - Islands in the byte stream (legacy)

    PPIはなんだかとっつきにくかったが,使ってみると意外といける。パースするコードは読まなくても,PDOM(Perl Document Object Model)が分かればとりあえず使うことができる。 ppidump.pl さて,まず実際にPPI使う前に,ダンプユーティリティを用意しておくと作業が楽になる*1。 #!perl -w # Uasge: ppidump.pl "say(q{Hello, world!})" use strict; use PPI::Document; use PPI::Dumper; my $document = PPI::Document->new(\"@ARGV"); PPI::Dumper->new($document, whitespace => 0, comments => 0)->print(); これでPerlソースコードから生成されたPDOMを見る

    PPIの簡単な使い方 - Islands in the byte stream (legacy)
  • Sedition·com is under the knife

  • 1