各ノードのコンパイル
この先はしばらく、switch文の各caseを順番に見ていきます。どの順番で読むと良いか特に妙案もありませんし、上からひたすら読んでいくとしましょう。飽きたら途中で考え直します。
まず最初の4つのケースは、コンパイルエラーだそうです。
case NODE_METHOD:{ /* OK */ COMPILE_ERROR(("BUG: unknown node: NODE_METHOD")); break; } case NODE_FBODY:{ ...同上... case NODE_CFUNC:{ ...同上... case NODE_SCOPE:{ /* OK */ COMPILE_ERROR(("BUG: shouldn't reach: NODE_SCOPE")); break; }
エラーだそうなのでいつもどおり、深くは考えない方向で行きます。多少grepしてみたところ、NODE_METHOD等々はclassのclone周りのコードにだけ登場して、スクリプトから構文木を作るparse.yには出てきていませんでした。なのでYARVのコンパイラでは考えなくてよい、ということかな…。