ruby-trunk-changes r57603 - r57611

今日は正規表現エンジン Onigmo の更新による非包含オペレーターのサポートなどがありました。

naruse: r57603 2017-02-12 00:08:33 +0900

正規表現エンジンの Onigmo の 6.1.1 をマージしています。 https://github.com/k-takata/Onigmo/blob/Onigmo-6.1.1/HISTORY
https://github.com/k-takata/Onigmo/issues/82 で導入された Absent Operator (非包含オペレーター)が目玉機能みたいです。 https://staff.aist.go.jp/tanaka-akira/pub/prosym49-akr-presen.pdf に資料があります。あるパターンにマッチしない文字列にマッチするという指定ができるオペレーターだそうです。正規表現の否定(マッチするかどうかの反転)って難しいのでこれがあると簡単に書けるようになるみたいですね。

svn: r57604 2017-02-12 00:08:34 +0900

version.h の日付更新。

nobu: r57605 2017-02-12 11:48:28 +0900

テスト用の拡張ライブラリ ext/-test-/symbol/init.c の sym_pinneddown_p() で true, false でなく ID の数値を返す(対応する ID がなかったら Qnil を返す)ようにしています。

nobu: r57606 2017-02-12 12:15:34 +0900

parse.y の ambiguous_operator() という解釈が曖昧な演算子の警告出力用のマクロで引数に token を受け取るようにして、演算子の文字列を token で埋め込むようにしています。 % 演算子の時に format 文字列のメタキャラクタになってしまっていたのを修正しているみたいです。

nobu: r57607 2017-02-12 13:20:35 +0900

parse.y で call_uni_op() の定義を ripper 用にも追加して単項演算子の処理を本体と ripper 用で処理を分けなくていいようにリファクタリングしています。またこのために def/id.def に not 演算子の ID を追加しています。

nobu: r57608 2017-02-12 13:23:16 +0900

r57607 と同様に parse.y に ripper 用に call_bin_op() というマクロを追加して、二項演算子の処理を本体と ripper 用で分岐しなくていいようにしています。

kazu: r57609 2017-02-12 13:31:25 +0900

拡張ライブラリ objspace の extconf.rb の magic comment frozen_string_literal を true に変更しています。

nobu: r57610 2017-02-12 17:33:33 +0900

r57607 や r57608 と同様に &&, ||, and, or などの論理演算子も ripper 用の logop() というマクロを導入して本体と ripper 用の処理を分けなくても良いようにしています。また defs/id.def に and と or の ID を生成するように追記しています。

nobu: r57611 2017-02-12 17:43:43 +0900

r57607, r57608, r57610 などの変更で不要になった parse.y の ripper_intern() というマクロの定義を削除しています。