ruby-trunk-changes r46841 - r46853

今日は parse.y のトークン切り出し(スキャナ)部分の関数を分割するリファクタリングや SizedQueue#push に non block な呼び出しを可能にする引数の追加などがありました。

nobu: r46841 2014-07-17 13:30:04 +0900

マイナス記号のついた負の数値のリテラルのパース時に negate_lit() で NODE を返して $$ に直接入れてたのを VALUE を返して $$->nd_lit に代入するようにリファクタリング

nobu: r46842 2014-07-17 13:30:13 +0900

parse.y で数値の構文解析部分を parser_yylex() から parse_numeric() という関数に切り出すリファクタリング

svn: r46843 2014-07-17 13:30:16 +0900

version.h の日付更新。

nobu: r46844 2014-07-17 13:30:21 +0900

parse_numeric() からさらに Rational リテラルのパース部分を parse_rational() という関数として切り出し。

nobu: r46845 2014-07-17 13:30:24 +0900

parse.y の parser_yylex() から ?a のような文法(qmark というのかな)の処理部分を parse_qmark() という関数として切り出しています。
?a だけじゃなくて条件演算子(三項演算子 a ? b : c みたいなの)の "?" なども含んでいるそうです。

nobu: r46846 2014-07-17 13:30:27 +0900

parser_yylex() から %{} とか %!! のような任意の記号によるクオート等の文法のパース部分を parse_percent() という関数に切り出しています。

nobu: r46847 2014-07-17 13:30:31 +0900

parser_yylex() から $ ではじまるグローバル変数(や特殊変数)のパース処理を parse_gvar() という関数に切り出しています。

nobu: r46848 2014-07-17 13:30:34 +0900

parser_yylex() から識別子を取り出す部分を parse_ident() という関数に切り出しています。

nobu: r46849 2014-07-17 13:30:38 +0900

parser_yylex() からインスタンス変数やクラス変数など @ ではじまる変数部分の取り出しを parse_atmark() という関数に切り出しています。

nobu: r46850 2014-07-17 13:30:44 +0900

r46848 で切り出した parse_ident() をさらに記号を含まない部分を切り出す部分を関数に切り出して、 $ や @ ではじまる変数の処理でも使いまわすようにしています。

nobu: r46851 2014-07-17 19:56:53 +0900

拡張ライブラリ thread の Queue#pop と SizedQueue#pop の引数に true をわたして non block な pop をした時(空で pop できなかったら待たずに例外発生させる)のテストを追加しています。

nobu: r46852 2014-07-17 19:57:13 +0900

拡張ライブラリ thread の SizedQueue#push に pop と同様に第2引数に true を追加するとブロックしない push ができるように拡張しています。 [ruby-core:63794] [Feature #10052]

nobu: r46853 2014-07-17 19:57:31 +0900

拡張ライブラリ thread の Queue および SizedQueue の実装で引数のチェックに rb_check_arity() を使うなどして簡潔になるようにリファクタリングしています。