Inner World of Perl::Lint
@moznion
@moznion
Perl::Lint のなかみ (うごき)
前処理
字句解析
解析
コード (文字列)
結果
前処理
字句解析
解析
コード (文字列)
結果
正規表現
Compiler::Lexer
Perl::Lint::Policy
前処理
字句解析
解析
コード (文字列)
結果
正規表現
Compiler::Lexer
Perl::Lint::Policy
## no lint
## no lintこれを取ってくる処理
正規表現で引っ掛けて,
「どのファイルの何行目か」
を持ってくる
で,結果 (行数とファイル名を持っている)と突き合わせて,
一致したらignore!!
Compiler::Lexerでもコメントは
持ってこれる (verboseモード)
けど4倍くらい遅くなる😢
漢の正規表現で前処理
前処理
字句解析
解析
コード (文字列)
結果
正規表現
Compiler::Lexer
Perl::Lint::Policy
Compiler::Lexerで
ソースコードをトークン列に
XS製
高速!
最近のは結構安定している
コード読めるので力で直せる
Perl-5.22………………
前処理
字句解析
解析
コード (文字列)
結果
正規表現
Compiler::Lexer
Perl::Lint::Policy
Token列を順繰りに読んでいき
解析を行っていく
各Policyがここらへんの
責務を負う
雰囲気
雰囲気
雰囲気…….
各Policyは独立してるので
書きやすい
ほんとうに。
単純にトークンを食べて,
それに従った処理を書くだけ
なので簡単
ほんとうに。
とは言え最初にParser
書くべきだったという意見
Policyを自分で書いて
自由に足すこともできる
ここらへんドキュメントに
なってなくて難しいので
あとで書きます
正規表現の中身も解析する
必要がある (/kore!/)
拙作のRegexp::Lexerで
ゴリゴリやって見ている
(The best of what's new on CPAN 2014 というのに載った)
現状のステータス
ほぼ全てのPerl::Criticの
Policyが互換な感じで動く
現状のステータス
ドキュメントが無い……
書かねば
$800!!!!!