タグ

ブックマーク / i.loveruby.net (22)

  • 第20章 Rubyの未来


    ruby2Rite LR 2.0     使CRuby ruby-talk I hate C++. C++使  CCANSI C
  • 第19章 スレッド


    ruby  CPU CPU       CPU  ruby  
  • 第18章 ロード


      Ruby使 requireload require 'uri' # URI load '/home/foo/.myrc' #      require load require require   .rb/.so  Ruby$
  • 第17章 動的評価


       evalModule#module_evalObject#instance_eval  eval eval eval使  p eval("1 + 1") # 2 eval lvar = 5 @ivar = 6 p eval("lvar + @ivar") # 11  
  • 第16章 ブロック


     RubyBLOCK      iter_method() do 9 #  end iter_method doend   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.
  • 第15章 メソッド

    この章ではメソッドの探索と起動について話す。 メソッドの探索 用語 この章ではメソッド呼び出しとメソッド定義の話を両方やる関係で、 実に様々な「引数」が出てくる。そこで紛らわしくならないように ここで厳密に用語を決めてしまうことにしよう。 m(a) # aは「通常の引数」 m(*list) # listは「配列引数」 m(&block) # blockは「ブロック引数」 def m(a) # aは「通常のパラメータ」 def m(a=nil) # aは「オプションパラメータ」、nilは「そのデフォルト値」 def m(*rest) # restは「restパラメータ」 def m(&block) # blockは「ブロックパラメータ」 ようするに渡すときは全部「引数」、受けるほうは全部「パラメータ」で 種類によってそれぞれ形容詞を付ける、ということだ。 ただし、ここで挙げたうち「ブロック引

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

  • 第13章 評価器の構造


    mainruby_runrb_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.cmain.c  mai
  • 第11章 状態付きスキャナ

    概要 理論のように、スキャナはただひたすらトークンに区切り、パーサはその並び だけを扱い、両者は完璧に独立している……という段階で済むならば、それは とてもありがたいことだ。しかし現実はそううまくはいかない。プログラムの 文脈によってトークンの切りかたや記号を変えなければならないということは よくある。この章ではスキャナとパーサの連携について見ていくことにする。 具体例 普通のプログラム言語なら、空白は単語の区切りになる以外はたいし て意味を持たない。しかしRubyは普通ではないので空白のあるなしで全く意味 が変わってしまうことがある。例えば次のような場合だ。 a[i] = 1 # a[i] = (1) a [i] # a([i]) 前者はインデックス代入であり、後者はメソッド呼び出しの括弧を省略して引 数に配列の要素を渡している。 また次のような場合もある。 a + 1 # (a) +

  • 第10章 パーサ


      parse.y*.yyacc parse.c lex.c gperf keywords lex.cparse.c#include使  1 Windowsmv ccCcppC 1:  parse.y parse.y 
  • 第9章 速習yacc


          scannerlexer     Fortran  
  • 第8章 Ruby言語の詳細


    Ruby  Ruby CD-ROM \footnote{RubyCD-ROMarchives/ruby-refm.tar.gz}  Ruby  Ruby使 Ruby   
  • 第6章 変数と定数

    章の概要 Rubyの変数 Rubyには以下のようにかなりたくさんの種類の変数・定数が存在する。 スコープの大きいほうから並べよう。 グローバル変数 定数 クラス変数 インスタンス変数 ローカル変数 インスタンス変数については既に第2章『オブジェクト』で説明した。 章では残りのうち グローバル変数 クラス変数 定数 について解説する。 また残るローカル変数については第三部で話す。 変数関連API 章の解析対象はvariable.cである。 まずそこからエントリポイントとなるAPIを紹介しておこう。 VALUE rb_iv_get(VALUE obj, char *name) VALUE rb_ivar_get(VALUE obj, ID name) VALUE rb_iv_set(VALUE obj, char *name, VALUE val) VALUE rb_ivar_set(V

  • 第7章 セキュリティ


     Ruby CGI   evaleval Ruby eval    Ruby 
  • 第4章 クラスとモジュール


      CRuby   API rb_define_class() rb_define_class_under() rb_define_module() rb_define_module_under() rb_define_method() rb_define_singleton_method()  API   rb_d
  • 第5章 ガ-ベージコレクション


           C      malloc()   
  • 第2章 オブジェクト

    例えば文字列オブジェクトならstruct RStringを使うので 図2のようになる。 図2: 文字列オブジェクトの表現 オブジェクト構造体の定義をいくつか見てみよう。 ▼オブジェクト構造体の例 /* 一般のオブジェクトのための構造体 */ 295 struct RObject { 296 struct RBasic basic; 297 struct st_table *iv_tbl; 298 }; /* 文字列(Stringのインスタンス)のための構造体 */ 314 struct RString { 315 struct RBasic basic; 316 long len; 317 char *ptr; 318 union { 319 long capa; 320 VALUE shared; 321 } aux; 322 }; /* 配列(Arrayのインスタンス)のための構造体

  • 第3章 名前と名前表


    st_tablest_table st_table   st_table    使 struct entry { ID key; VALUE val; struct entry *next; /*  */ }; 10001000 
  • 第1章 Ruby言語ミニマム


    Ruby  Ruby Ruby         RubyJavaint longprimitive