Bison 和 AST 的研究也到此,跳出來看 yycompile0。從 yyparse 最後會 match 到的 program
程式裡面,看到關鍵字 p->eval_tree
,猜測這可能是下一步的要處理的內容,用它在 yycompile0 內找到取用的地方,但是找不到像 compile YARV instruction 的操作。
看到 yycompile0 最後有 p->ast->body.root = tree;
,再假設這才是下一步會處理的內容,用 ast->body.root
當關鍵字找到 vm_eval.c,裡面呼叫到 rb_iseq_new_eval, rb_iseq_new_with_opt
,的確找到呼叫在 compile.c 裡的 rb_iseq_compile_node
,應該就是這邊會產生對應 AST node 的 instruction sequence