neo-c2 version 3.0.1リリース
char_matchとchar_subなど文字列ライブラリでちょっと互換性が取れなくなったため
メジャーバージョンアップとなってます。といっても"AAA".match("A".to_regex(), null)
を"AAA".match("A".to_regex())と変えるなどの変更でコンパイルエラーが検出してくれるはずです。
文字列ライブラリは強力になりました。特にchar_sub_blockが強力です。
xassert("char_sub_block test", "ABCABCABC".sub_block("ABC".to_regex_flags(true`global, false)) { return it.substring(0, 1); }.equals("AAABC"));
が真となります。まあ、RubyとかPythonなどである、subにメソッドブロックをとるものですね。
regexはchar_to_regexだけでなくchar_to_regex_flags(char* self, bool global, bool ignore_case)でも生成できるようになりました。`globalはアノテーションで単なるコメントです。
あとメソッドブロックで型推論ができなかった様子でした。上記の通り戻り値を推論してくれます。
itはメソッドブロックの引数です。it, it2, it3,....です。
sub_count, split_maxsplit, sub_block_countなど他にもPythonクローンを実装していって必要になった文字列ライブラリを追加してます。今後も文字列ライブラリに機能を追加していってPythonのスーパーセットになると思います。
あとは関数ポインタのポインタ数にバグがあった様子で修正しています。
pythonクローンの方はボチボチ進めていってます。今はreモジュールを実装していってます。
まあ、こっちはPythonの勉強用に作っていっているため、特に気楽に実装してます。
neo-c2の方はバグがあると眉間にしわを寄せて本気モードで10時間くらいデバッグしたり
結構真剣です。
viクローンのvinの方はC言語の関数名とneo-c2のメソッド名の補完がC-xで起動できますが
だいぶ目処がついてきたと思います。TABのワードによる補完の方が便利ですが。
まあ、今日でneo-c2の方はある程度目処がついたと思うで、気楽にPythonとviクローンの方を
実装していきたいと思います。
あまり生活に支障がくるようなプログラミングは徐々に辞めていきたいと思います。
といってもneo-c2のバグがあると本気でデバッグしちゃうんですけどね。
まあ、どうでもいい、おっさんの戯言でした。
viクローンはneo-c2/vinに
Pythonクローンはneo-c2/yappyに
あります。
Discussion