- 追加された行はこの色です。
- 削除された行はこの色です。
[[mrubyを読む]]
#contents
*はじめに [#ha2d1f6f]
スクリプト解析は文字列を解析する関数とファイルを解析する関数がありますが、それらの違いは所詮、入力の違いなのでmrb_parse_string()をスクリプト解析のエントリポイントとして読み進めていきたいと思います。
(まだ読んでません)
*mrb_parse_nstring(src/parse.y) [#k3c722a6]
mrb_parse_string()は渡された文字列をstrlenしてmrb_parse_nstring()に渡しているだけなのでmrb_parse_nstring()を見てみましょう。
#code(C){{
parser_state*
mrb_parse_nstring(mrb_state *mrb, const char *s, size_t len)
{
parser_state *p;
p = mrb_parser_new(mrb);
if (!p) return 0;
p->s = s;
p->send = s + len;
mrb_parser_parse(p);
return p;
}
}}
スクリプト解析で鍵となるのはmrb_parser_state構造体のようです。mrb_parser_stateはinclude/compile.hに書かれています。なお、上記ではparser_stateになっていますが、parser_stateはmrb_parser_stateをtypedefしたものです。
(今ここ!)