[BASIC-E]
しばらく放置している間に、どんな構造で作ったのか忘れ始めてる自分がいる (^_^;;
確か、ソース行の管理もしており、行が入力された瞬間に中間コードへコンパイル。
コンパイルの段階で変数の領域まで確保/解放するといった面倒な方法を採用していた気がする。
メモリが少ししかなくて、処理速度が(PCよりも)遅いマイコン等に対応することを考えて
実行時にしなくて良い処理はなるべく入力時にさりげなくやってしまおうという魂胆でしたが
それが構造を複雑にして、エディッタと融合してしまう結果になってしまいました。
そのエディッタが使いやすければいいですが・・・残念ながら、極めて使いにくい (^^;
趣味プログラムと言うことで、行き当たりばったりで作っている関係上、そろそろ中身が謎な構造
になり始めたので、そこまでのモノをプロトタイプと称して、正式版を改めて作り始めたところです。
でも、その作り始めたモノ(C版)も、しばらく放置していたため、中身を忘れてしまいました。
ダメじゃん>俺 (^^;
ということで、あちこちに組み込んでいろいろ応用したい気持ちがあるので、ちゃんと設計してから
作ることにしました。
メインターゲット
・PC
・Zaurus
PCは当然よく使いますが、Zaurus も結構使うので、それらで動くことを最低条件とします。
マイコンは・・最終成果物が出来てから対応できるようなら対応します程度。やっぱり一人で作るのだから
欲張っては行けません (^^;
言語の仕様
・昔の BASIC に近い仕様
・行番号は廃止
・数値/文字列以外のオブジェクトも扱えるようにする
・プラグインで拡張できるようにする
・少なくともプラグインを作るための資料はオープンにする
・言語コアのソースは非公開
プロトタイプは、既存の BASIC の文法にはこだわらないとして、独自の改変をした部分が多々ありました
が、結局新たな言語を覚えるという負担を強いるだけで、全然メリットがなかったために、途中から
昔の BASIC になるべく近づける方針に変わっていきました。今度は、最初から昔の BASIC との互換を
重視していきます。
オープンソースは、かなりの「自由」をもたらしますが、それが故の「不自由」ももたらします。
今までソースを公開していたモノもいろいろありますが、私にとってそうすることによるメリットは
全くなかったので、今後はオープンソースはなるべく避ける方向で進めます。
Zaurus 用のコードの場合、Qt/Embeded の Free版を使うため、それに伴う「オープンソース強制」が
働く範疇に限りオープンにします。ただし、その範疇が最小限に収まるように、何らかの方法で分離
した構造になります。パフォーマンスが多少落ちるかもしれませんが、仕方ありません。
オブジェクトを扱えるとは、プラグインの形で定義されているクラスインスタンスを生成できて、
たとえば次のように記述できるようにすることです。
uart0.set_rate 38400
uart0.print "通信ポート0に文字列を送信"
言語にクラス定義の機能は持たせないので厳密なオブジェクト指向とはほど遠いですが、
名前で区別するとプラグインが増えたときに名前が衝突しやすいし、下記のように引数も増えてしまうかもしれない。
uart_set_rate 0, 38400
uart_print 0, "通信ポート0に文字列を送信"
それはそれで不便だし、オブジェクト参照もくわえれば・・・
if out_target = 0 then
ref_out = uart0
else
ref_out = lcd
end if
ref_out.print "何かに文字列を出力"
せめてこのくらいは出来るようにしたいかな。
[▲上へ]