Cμ 文字列処理改良,rgx_T
の置換道手の引数順序変更,客体表現への書き換え。
交単語 xfm
を一部類型化正規表現で実験的に使っていたが,やはり部分的な置換を表す rpl
と区別出来た方がいいので今後は最終的な置換を表すものとして積極的に使っていくことにした。
rpl
}{xfm
}{希哲16年2月8日の進捗時限}{希哲16年2月8日の進捗}(21)rgx_T::rpl()
}{rgx_T
の置換道手の引数順序変更}{引数順序}(22)Cμ 文字列処理改良,rgx_T
の置換道手の引数順序変更,客体表現への書き換え。
既存の類型化正規表現の客体表現への書き換えは完了した。これらの道手の引数順序や rgx_T::rpl()
の呼び出し箇所も修正済み。
類型化正規表現にしていないばらばらの正規表現群の客体表現への書き換えを残した。
rgx_T
}{s_T
の補助函数}{幸いした}{書き換え作業}{置換作業}{必要な時期}{置換した}(69)Cμ 文字列処理改良,rgx_T
の置換道手の引数順序変更。
あとは rgx_T::rpl()
の引数順序変更で rgx_T
の置換道手の引数順序変更は完了だが,これまでの道手の呼び出し箇所が Dex のごく一部に限られていたのに対し,.rpl()
は Cμ 初期からあちこちで使っている置換道手なので,少し複雑な作業になる。
まず,いったん .rpl()
を適当な名前に変えて無効化し,呼び出し箇所を引数順序変更済みの .rpl_glb()
あるいは客体表現に置換するか,正規表現・客体表現を使うまでもない処理なら s_T
の補助函数に置換する。現時点で .rpl_glb()
は .rpl()
の冗長版に過ぎないため,置換したままにしておいて問題ない。交度整理をしていけば自然に戻るはずなので,あえて再置換はしないことにした。
置換作業に入る前に,作業に必要な s_T
の補助函数整備も必要だが,既存の「類型化正規表現」(rgx_x_T
)の置換道手も旧式の引数順序にならっているため,まず最初に客体表現(ojx_x_T
)への書き換え作業を済ませることにした。rgx_T
を直接使った交度から類型化正規表現への書き換え作業が想定より遅滞していたことが幸いして,現時点で類型化正規表現は多くない。
いずれにせよ,正規表現の総点検や客体表現への書き換えが必要な時期であり,保守性と効率性の大きな向上が見込める良い機会だ。
(進捗時限記録中略)
ようやく原因判明,修正,途中だったコメントアウト記法を出振るいして終了。
C++ における大域変数の初期化順序の問題で,環境依存だった理由も分かった。初歩的なことだが,そもそも大域変数を多用するような実装をしてこなかったのでこれまで直面せず,認識が甘かった。
ふだんほぼ使わない GDB まで持ち出してあれこれ試行錯誤したが,その過程で文字列・正規表現周りに最適化余地も多く見つかり,結果的には良かった。類型化正規表現のためにもどうしても解決しておきたかった。
本番環境とほぼ同じ環境で,空いている捌き手を利用してデバッグ環境を整えたので,稼働中のデライトに影響は無かった。この経験は今後に活かせそうだ。