「基礎からわかるElm」を読んで
http://minosys.hateblo.jp/entry/2020/06/02/004915
minosysScript 更新中
minosysScript 実装中です。
今日までに代入、++、– –、比較演算子、+, * を実装しました。
今週は地道に演算子の実装を行う予定です。
今週中に演算子全ての実装が終わると思いましたが、
演算子の数が思ったよりも多く、ちょっと無理そうです。
minosysScript を1年ぶりに更新中
実行エンジンを中途半端に実装して1年間
ほったらかしていた minosys-scrypt ですが、
1年ぶりに実装を追加することになりました。
minosys-script.git を取得するすると最近の
ソースコードが入手できます。
とりあえず、今週末までには class, package
関連以外の内容を追加したいと考えております。
毎日コミット予定なので、言語が出来ていく様子が
リアルタイムで見られるかも?!
minosys-script は最終的には www サーバ
として稼働して www に特化した処理(html の
ダウンロードや画像ファイルの range 転送)
を実装する予定ですので、乞うご期待。
何年先になるか分かりませんが。
どっちが正解??
スクリプト処理系で配列変数を定義するにあたり、どちらの実装にするべきか悩んでいる。
- 演算子 “[” を定義し、第1引数にベース、第2引数にキーを設定する。
- 変数に添え字配列を用意する。
1.の利点は固定数の引数に対して演算子を定義すればよいことで、実装が簡単になる。その分、実行エンジンは遅くなりますが。
2.はイメージとしては
class Content { Content *c; vector <Content *> pc; };
として、pc が empty でない場合は連想配列の引数とみなすようにする。
2.の利点は実装が多少煩雑になるが、多重配列を定義する場合の実行速度を上げることができる。(ツリーをたどらず、O(1) の配列要素が利用できるので。)
最初1、の実装で考えていたが、途中で考え直して2.の実装に切り替えた。(コード上はその残骸が残っていますが)ただし、まだ変数を左辺値に指定すると NullException が発生するというバグがある。