OsoScript Ver0.02の仕様
OsoScript Ver0.02の仕様をまとめてみたいと思います。
処理の流れ
処理はmain()関数から始まります。必ず、function main(){ }を書いてください。
コメント
コメント文は、
- 一行コメント #.......
- 複数行コメント #[.....改行有り.....#]となります。
型
型の区別ははありません。ただし、数値の計算は、内部的にすべてfloatです。
宣言は、グローバルとローカルと配列宣言だけです。グローバル変数は、関数宣言より前に宣言してください。配列変数は、関数宣言の前に宣言したものはグローバルとして、関数内部で宣言したものはローカルとして扱われます。ローカル変数は、関数内部で宣言します。
#グローバル変数宣言 global abc; ・・・・・・・・コマンドの後ろにはセミコロンを付ける。 global def = 10; ・・・・・・宣言時に代入できる。 global ghi = "TEST";・・・・・文字はダブルクォーテーションでくくる。 global gjkl = 'テスト';・・・文字はシングルクォーテーションでもくくれる。 array y[10];・・・・・・・・・arrayを用いた配列宣言では値の代入不可。 global u[0] = 10; ・・・・・直接配列宣言も可能。 global u[2] = '配列'; ・・・飛ばしての宣言も可能。 #メイン関数 function main(){ local xyz = 0; #ローカル変数宣言 array qwe[10]; #ローカルの配列宣言 }
変数
変数に関して、配列番号の無い変数は、すべて配列[0]番の変数となります。すなわち、
abc==abc[0]
となります。また、宣言した時点で、変数は0となります。文字としては、"0"が入っています。OsoScriptでは、変数の値をすべてテキストで持っています。
変数の条件
- 変数は現在、100個までしか使えません。同時に使用できる変数が100個までということです。
- 変数の文字数は12文字までです。使えるのは英字先頭で英数字です。また"_"も使えます。
- 変数の大文字小文字は区別します。
- 変数の多重宣言のチェックはしていません。先に宣言した方が優先されます。
- 同名のグローバル変数とローカル変数は、ローカル変数が優先されます。
- 【要注意・バグとも言う】12文字を超えた文字を代入して宣言すると、それ以降に宣言した変数が無視されます。これではまることがあります。
ブロック
ブロックは{}で囲みます。ただし、ifやwhile、forといった構文でしか使用できません。
関数定義
関数定義は、function 関数名() {} で行います。関数名は12文字以下です。関数内部で関数の宣言はできません。
function main(){ local u; u = aaa( 'テスト', 4 ); } function aaa( bb, vcv ){ print( 0, 0,0, bb , rgb(31,31,31) ); return( 1 ); }
引数は、()内でカンマで区切って宣言します。【注意】引数は8個までしか取れません。
if文
if文はif(){}elseif(){}else{}のように書きます。
if( a==0 ){ print( 0, 0,0, 'ゼロ' , rgb(31,31,31) ); } elseif( a==1 ){ print( 0, 0,0, 'イチ' , rgb(31,31,31) ); } elseif( a==2 ){ print( 0, 0,0, 'ニ' , rgb(31,31,31) ); } else print( 0, 0,0, 'その他' , rgb(31,31,31) ); }
while文
while文はwhile(){}のように書きます。
a = 0; while( a<5 ){ box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 ); #黒く塗る print( 0, 0,0, a, rgb(31,31,31) ); #aの値を書く a = a +1; } break;で強制的にループから抜けます。 while( true ){ box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 ); #黒く塗る print( 0, 0,0, a, rgb(31,31,31) ); #aの値を書く a = a +1; if( a==5 ){ break; } }
for文
for文はfor(初期化,終了条件,増分値){}のように書きます。
for( i=0, i<10, 1 ){ box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 ); #黒く塗る print( 0, 0,0, a, rgb(31,31,31) ); #aの値を書く }
c言語と違い、カンマで区切ります。また、増分値は、for文開始後、変更されません。注意してください。
条件式の評価
条件文の評価は、真が0以外、偽が0です。よって、複数条件の評価は下記のようになります。また、true、falseも使えます。
- 真 0以外, true
- 偽 0 , false
AND条件の表現(論理積) if( (A==0)*(B==0) ){ } 条件結果を掛け算する。 OR条件の表現(論理和) if( (A==0)+(B==0) ){ } 条件結果を足し算する。
四則演算子
- 加算 : +
- 減算 : -
- 乗算 : *
- 除算 : /
- 余り : %
NDSに依存しない実装コマンド
- int( ) 小数部を切り捨てます。
- exec(Osoスクリプトファイル名) 指定のOsoScriptを実行します。
DSに依存する実装コマンドは、2009/12/27のブログ「DS版OsoScriptを作った - コンピュータを楽しもう!」に書いています。
新規追加コマンドは、inputです。
inputコマンド input(キーボード表示画面,キー代入変数,初期文字列,入力許可文字数);
inputコマンドは、キーボード表示画面に、タッチスクリーンの画面を指定し、タッチしたキーの内容を保存する変数と初期文字列があればその文字列、そして、入力許可文字数を指定します。現在は、12文字までしか使えないので、最大12となります。
以上がOsoScript Ver0.02の仕様です。
本当にやりたいこと
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム