『Rubyのしくみ』
https://images-na.ssl-images-amazon.com/images/I/51UJvlz4sPL._SX350_BO1,204,203,200_.jpg
何章を読んで、何章を読んでないのか忘れたmrsekut.icon
Ruby知らなさすぎて読むのしんどい
1章 字句解析と構文解析
文法規則
パフォーマンス面、Lexが用意していない特殊な字句解析ルールが必要だった
Ripper
Rubyが実際に使用している字句解析器と構文解析器を呼び出せる
Ripper.lex
行番号、列番号、シンボル、トークン情報の配列を返す
文法エラーは指摘しない
2章 コンパイル
Ruby1.9以降はコンパイラが導入された
Rubyコード→トークン列→ASTノード→YARV命令列→・・・→C→機械語
RubyコードのASTをYARV用コードに変換していく過程が説明されている
関数呼び出しとブロック呼び出し
丁寧なんだけどいまいち頭に入らないなmrsekut.icon
実際になにか作ってみないとだめかも
3
スタック指向な仮想マシン
ただのスタックマシンじゃない、二重スタックマシンだ
内部スタック
コールスタック
どのメソッドが、他のメソッドや関数やブロックやラムダを呼び出したのかを記録する
rb_control_frame_t構造体のスタック
メンバ
sp
pc
プログラムカウンタ
現在の命令の場所を指す
self
type
METHOD, BLOCK, EVALなど
4
5
6
7
8
9
10
11
12