文字変数復活
変数の仕様として、文字変数は無しで進めようとしていたのですが、スクリプト仕様の中に、
というのがあって、よく考えると、これって呼び出すスクリプトが書かれたファイル名を引数とする関数を用意することになるということに、気づきました。
もともと、変数の内部的な仕様としては、文字変数も考慮したものになっていたので、文字変数を扱うことを復活させたいと思います。
文字変数の扱い
スクリプトを書く時には、文字変数は数値変数と違うものとして扱います。元々C言語表記をベースに言語体系を考えていたので、ここも準じたいと思います。
- 文字変数への直接代入は認める。例、local m="MOJI"; このような代入は可能とします。
- 式を用いた文字変数の連結は認めない。strcpyのような関数を用意する。
- 12バイトを超える文字を変数に入れたいときは、array宣言して領域を確保する。array m[1]; とすれば、m[0]とm[1]が連続した領域で確保されるので、文字変数 m として使うと、24バイトの文字を扱えるようにする。
これで、内部的な変数の扱いは、ほぼ昨日書いたままで使えると思います。個人的にはファイル名(8文字)以上の文字を扱うことは無いと思っています。
文字変数に関連した文法の追加
- 文字を代入する場合、文字列は、" か ' によって指定する。例、local m="MOJI"; もしくは、local m='MOJI'; とする。これによって、文字列に " や ' 文字を使えるようにする。同時使用は勘弁してもらいます(作者都合)。
スクリプトから他のスクリプトを起動する
文字変数を復活させた原因となった仕様ですが、簡単に説明すると、スクリプトを呼び出す関数を用意しようと思っています。理由は、あまり深い理由は無いのですが、いくつか機能別にスクリプトを用意しておいて、ランチャスクリプトのようなもので切り替えるような仕組みを持たせられるようにしたかったからです。
この場合、元のスクリプトは完全に消えますので、メインメモリ的には初期状態となっていることになります。ただし、元のスクリプトで動作させた割り込み処理等は、スクリプト内で止めない限り動き続けるものとします。
少し話はそれますが、OsoScriptプログラムが起動するときに、どのスクリプトを実行させるかは、oso.runというファイルに書いておくこととします。例えば、oso.runファイルにlauncher.osoと書いていると、OsoScriptはlauncher.osoを起動時に読み込み動作させます。左図に実行時のイメージ図を示します。
この図の場合、launcherスクリプトの中で、さらに別のスクリプトを呼び出しているイメージになっています。こんな感じで使えるような仕様に作りたいと思います。
ようやく、イラストを使ってみました。でも、絵を描くのって面倒ですね。プログラムを作り出したら、ソースの引用とかもやってみたいと思います。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム