Compiler ######### Overview ********* mrbgems/mruby-compiler/, mrbgems/mruby-bin-mrbc/ あたりにあるコードを対象に記述します。 Details ******** キーワードのマッチング ====================== * `gperf `_ に基づいたハッシュ関数を元にキーワードのマッチングを行います - gperf については `このあたりの記事 `_ が参考になりそう * keywords が入力となるキーワード定義、 lex.def がそれを gperf に食わせた結果の出力ファイルのようです。 mrb_lex_state_enum =================== * 構文解析器で使う状態を示すための enum 値 - TODO: 詳細を書く AST === * node_type に AST の各ノードのタイプが記載されている APIs **** パース処理 ========== mrb_parser_dump() ----------------- * メインのパース処理 コード生成 ========== mrb_generate_code() ------------------- * 引数に渡した parser_state を元にコード生成を行い、 RProc* を返す。 * C 実装で mruby スクリプトの文字列をパースしてコード生成する人にはお馴染みかも。 Others ****** mrbc ==== * mruby スクリプトの .mrb バイトコードを生成するための実行ファイル。 * mrbgems/mruby-bin-mrbc/ にコードが存在 mrbc_context ============ * mruby コンパイラのコンテキスト情報を保持する * ファイル名とかシンボル名とか