タグ

rubyとnodeに関するtyosuke2011のブックマーク (5)

  • 第16章 ブロック

    イテレータ この章ではRubyスタック七のうち最後の大物、BLOCKが登場する。 これが終われば評価器の内部状態についてはわかったも同然だ。 全体像 イテレータの仕組みはいったいどうなっているのか。 まず次のような小さいプログラムで考えてみよう。 ▼ソースプログラム iter_method() do 9 # ブロックを探す目印 end 用語を確認しておく。このプログラムで言うとiter_methodが イテレータメソッド、do〜endがイテレータブロックだ。 このプログラムの構文木をダンプしたらこうなった。 ▼対応する構文木 NODE_ITER nd_iter: NODE_FCALL nd_mid = 9617 (iter_method) nd_args = (null) nd_var = (null) nd_body: NODE_LIT nd_lit = 9:Fixnum イテレータブ

  • 第12章 構文木の構築

    またnode.hではこの共用体メンバにアクセスするためのマクロも用意されて いる。 ▼NODEアクセス用マクロ 166 #define nd_head u1.node 167 #define nd_alen u2.argc 168 #define nd_next u3.node 169 170 #define nd_cond u1.node 171 #define nd_body u2.node 172 #define nd_else u3.node 173 174 #define nd_orig u3.value : : (node.h) 例えばこんなふうに使う。 NODE *head, *tail; head->nd_next = tail; /* head->u3.node = tail */ ソース中ではほぼ間違いなくこのマクロのほうが使われる。そのごくわずかな 例外はparse.

  • https://i.loveruby.net/ja/rhg/book/module.html

  • 第13章 評価器の構造

    main発ruby_run経由rb_eval行き コールグラフ 評価器の真のコアはrb_eval()という関数なのだが、 この節はmain()からそのrb_eval()までの道筋を追ってゆく。 まず以下はrb_eval()周辺のおおまかなコールグラフである。 main ....main.c ruby_init ....eval.c ruby_prog_init ....ruby.c ruby_options ....eval.c ruby_process_options ....ruby.c ruby_run ....eval.c eval_node rb_eval * ruby_stop 右側にはファイルが移動するところでファイル名を入れておいた。 これをジッと見てみてまず気付くのは、eval.cの関数からmain.cの 関数を呼び返していることだ。 呼び返している、と書いたのは、mai

  • ズンドコキヨシまとめ - Qiita

    概要 いま、ズンドコブームが来てます。 Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから 「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた — てくも (@kumiromilk) March 9, 2016 非常にセンスが良いですね! 巷では「ズンドコキヨシ」「キヨシチェック」「ズンドコチェック」などと呼ばれているようです。 さまざまなズンドコキヨシ プログラミング言語系 ズンドコキヨシ with Ruby by @yancya 無限に'ズン'と'ドコ'をランダムに返すEnumeratorを使ってるのがいいですね ワンライナーズンドコキヨシ with Ruby by @from_kyushu 毎回 'ズン'と'ドコ'のランダムな5つの組み合わせを

    ズンドコキヨシまとめ - Qiita
  • 1