ひとり勉強会

ひとり楽しく勉強会

2006-11-20から1日間の記事一覧

まとめ

case〜when 式は条件が全部リテラルだとテーブルでジャンプするようになってる そこにRubyのArrayやHashオブジェクトが使われてて便利そうでした てな感じでした。うーむ。もっと読むスピードアップしようかな。。。

NODE_WHILE など

続いて、ループ構文です。 while 条件式 本体 end のような形のwhile式をコンパイルします。untilは、whileと終了条件の真偽が逆になったバージョンで、NODE_OPT_Nは、rubyコマンドを-nオプションで起動したときに自動で作られるループ構造 while gets スク…

NODE_WHEN

さきほども述べたように[式0] (head) がないcase文がここで扱われます。「headがwhen式の条件部とマッチしていたら」という判定が、「when式の条件部のどれかがtrueだったら」にすべて変わるだけで、基本的な構造はまったく同じです。むしろだいぶ簡単です。…

NODE_CASE

次は、case文です。 case [式0] when 式1 then 本体1 when 式2 then 本体2 .. else .. end という形の式で、上から順にwhen節を調べていって、式n === 式0 が成り立つところの本体が実行されます。この部分をコンパイルするコードのちょうおおまかな流れは、…

YARVソースコード勉強会 (4)

こんにちわ。月曜日になってしまいましたが復活です。 今日からリビジョン 581 に更新して読んでいきます。先週に引き続き、 static int iseq_compile_each(yarv_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) { ... type = nd_type(node); swit…