前面的例子雖然只用了 puts 但覺得還是複雜。 用更簡單的,什麼都沒有的情況,仍然會看到 Ruby program 的 root program,另多出一個...
要看懂 parse.c 需要對 Bison 有一定瞭解,可是 https://www.gnu.org/software/bison/manual/bison.h...
看 none 對應的 C code # define Qnull 0 case 782: /* none: %empty */ #line 6127 &...
前面提到 AST tree node 生成順序與 bison grammar match 順序的理解不太精確。 從 parse.y 看,program 會是 %...
Bison 和 AST 的研究也到此,跳出來看 yycompile0。從 yyparse 最後會 match 到的 program 程式裡面,看到關鍵字 p-&...
想先找到這個 function 如何回傳結果,推測是存到傳入的 const NODE *node。經過 macro COMPILE 可以找到 iseq_comp...
struct RNode (NODE) 結構的使用方式可以從 node.h 定義的 macro 裡面猜一下,一組一組的應該對應到不同 node_type,只是沒...
單純地執行 ruby someprogram.rb 時的 call stack: main rb_main void * ruby_options(int...
看過 parse.c 一路,只考慮執行一段最簡單的 Ruby code,跳過各種細節,知道 ruby_options 會產生 iseq,然後 ruby_run_...
雖然前後沒有連貫,但想先看一下。找 code 的方法是用 Ruby 內的工具印出 YARV instruction,挑一個 instruction 當關鍵字找...