読者です 読者をやめる 読者になる 読者になる

言語のしくみを読む

main関数からstrm_var_def関数を呼び出す
引数の"ARGV"はstrm_stringに保管されてる、av変数にはコマンドライン
引数が入っているので"ARGV"の名前で保管される。

次はnode_run関数を呼ぶ //exec.c

node_init関数内でstrm_var_def関数を使ってシンボルをハッシュに登録している
“STDIN”->strm_io_new(0, STRM_IO_READ)
“STDOUT”->strm_io_new(1, STRM_IO_WRITE)
“STDERR”->strm_io_new(2, STRM_IO_WRITE)
“puts”->strm_cfunc_value(exec_puts)
“+”->strm_cfunc_value(exec_plus)
“-”->strm_cfunc_value(exec_minus)
“*”->strm_cfunc_value(exec_mult)
“/”->strm_cfunc_value(exec_div)
“<”->strm_cfunc_value(exec_lt)
“<=”->strm_cfunc_value(exec_le)
“>”->strm_cfunc_value(exec_gt)
“>=”->strm_cfunc_value(exec_ge)
“==”->strm_cfunc_value(exec_eq)
“!=”->strm_cfunc_value(exec_neq)
“|”->strm_cfunc_value(exec_bar)
“%”->strm_cfunc_value(exec_mod)
“fread”->strm_cfunc_value(exec_fread)
“fwrite”->strm_cfunc_value(exec_fwrite)

strem_seq_init関数を呼ぶ strem_var_def関数を使ってseq->strem_cfunc_value(exec_seq)を登録している
strem_socket_init関数を呼ぶ
strem_var_def関数を使って
tcp_server->strem_cfunc_value(exec_tcp_server)
strem_var_def関数を使って
tcp_socket->strem_cfunc_value(exec_tcp_socket)
を登録している