そら豆スクリプトの概要>Syntax & Style
現在のそら豆スクリプト(SoraMame.ps.js)は、プログラムをProcessing.jsに変換して実行します。
コマンドリファレンスは、こちらにあります。
そら豆スクリプトでは、コードを書くための文字を次のように分類しています。
以下の文字は、助詞として特別扱いします。
と、に、を、の、で は
とくに、「は」はデータ型の宣言に使います。
これらの文字は、変数名や関数名に使用できません。
「、」(全角-読点)は、オブジェクトのメソッド呼び出しに使います。
124 , 3.14 , -2.3
カラー型のデータなどを16進表記で記述できます。
#FF00 , #2234
次の記号は、そら豆スクリプトで特別な役割を持っています。
= + - * / % ^ ( ) [ ] { } . , : @ ! & | < > # = + − × * ÷ / % ^( ) [ ] { } . 。 : @ ! & | < > 「」『』 #
これ以外の記号は、ふつうの文字として自由に利用できます。
「、」(全角-読点)は、特別な記号として扱っています。
文字列(もじれつ)とは、プログラム中の文字によるデータのことです。
文字列は、次の2つのどちらかのカッコのペアで、はさみます。
文末は、次のどちらかで判断します。
日本語では、ほとんどの場合、言葉と言葉の間に空白をおきません。
そのために、プログラムとして言葉の判別が難しくなっています。
そこで、そら豆スクリプトでは、文中の言葉の区切りを、
「助詞」、「数字」、「記号」、「文字列」で判別します。
全角文字と半角文字のほとんど。
ただし、以下をのぞきます
とくに、最初の1文字に数字は使えません。
変数は、名前の前に'@'を記述します。
@マウスX @幅 @点数
@のあとには、日本語や英語をそのまま使えます。2文字目以降には数字も使えます。
値が変化しないデータは、定数にします。また、システム上で指定が必要な単語や定数は、キーワードとなります。
定数とキーワードは、名前の前に'$'を記述します。
$P3D $PI
@のあとには、日本語や英語をそのまま使えます。2文字目以降には数字も使えます。
変数名のあとには、次のように助詞(は)で、データ型を宣言できます。
@点数は整数型 @メッセージは文字型
変数名のデータ型を指定した直後に、初期値を代入することもできます。
@点数は整数型 = 0 @メッセージは文字型 =「あ」
次のデータ型は、基本データ型としてデータ型の宣言なしで利用できます。
整数型 実数型 文字型 正否型 カラー型
「組み込みデータ型」とは、より高度な機能をもったデータ型で、基本データ型と少し使い方が違います。
「組み込みデータ型」は、ひとつのデータ型で複数の値をまとめたり、値に対する特別な機能や操作(メソッド)を備えています(オブジェクト指向の組み込みオブジェクトに相当します)。
このようなデータ型を使うには、変数名のあとには、次のように助詞(は)で、データ型を宣言します。 ここは、先ほどと同じ。
@vはPベクトル型
変数名に、初期値を入力するには、次のように「新しい」命令を使います。
@vはPベクトル型 @v = 新しい{x:10, y:20, z:40}のPベクトル型
これは、次のようにひとつにまとめることもできます。
@vはPベクトル型 = 新しい{x:10, y:20, z:40}のPベクトル型
個々の値は、次のようにして利用できます。
@vの@x = 100
また、データ型に対する特別な操作は、次のように呼び出します。
@v、{x:100, y:200, z:400}に設定する
配列は、複数のデータを番号をつけて扱う機能です。
次のように、記述します。
@プレイヤー[1] = 7 @プレイヤー[2] = 34 @プレイヤー[3] = 240
配列を使うには、次のように宣言します。
@(配列名)は(データ型)[]
あらかじめ配列の個数を宣言したい場合には、次のように書きます。
@(配列名)は(データ型)[] = 新しい(データ型)[(個数)]
ちょっと特別な書き方ですが、先ほどの組み込みデータ型や、あとで出てくる独自データ型と同じスタイルになっています。
とりあえず、数式、論理式(条件式)が使えます。
詳しくは、SoraMame.ps.js/Referenceの「算術記号」「比較記号」「論理演算記号」を参照ください。
先頭また文中に、「//」を書くと、以降はコメント文になり、プログラムの実行時に無視されます。
//これ以降は、コメント文
ブロックコメントは、準備中。
実行文は、引数の並びに続いて、命令語をおきます。
例 {幅:250, 高さ:250}のサイズ {x:マウスX, y:マウスY}に{幅:10, 高さ:10}のマル
この例で命令語にあたるのは、「サイズ」「マル」です。
引数は、「引数名」と「値」の2つを組み合わせ、それを「{}」で囲んで、助詞でつなぎます。
引数は、記述した順番に(実は)依存します。
引数名と助詞の種類・順番は、無視されます。
さきほどの例で、引数にあたるのは
{幅:250, 高さ:250}の
{x:マウスX, y:マウスY}に{幅:10, 高さ:10}の
です。
次のように記述して、代入先の変数に、代入元の値を入れます。
(代入先) = (代入元)
@点数 = 0
代入元には式(数式、論理式)を利用できます。
@点数 = 3 + 2
データ型のところで説明したように、データ型の宣言に続いて、初期値を代入することもできます。
@点数は整数型 = 0 @メッセージは文字型 =「あ」
組み込みデータ型のところで説明したように、「新しい」命令とセットで使うこともできます。
@vはPベクトル型 = 新しい{x:10, y:20, z:40}のPベクトル型
また、代入演算子も使えます。
@点数 += 10
詳しくは、SoraMame.ps.js/Referenceの「代入記号」を参照ください。
次の2つの書き方があります。
もし{条件:条件式}ならば {//ここを実行}
もし{条件:条件式}ならば {//ここを実行} ちがえば {//ここを実行}
条件式については、SoraMame.ps.js/Referenceの「比較記号」「論理演算記号」を参照ください。
指定した値から指定した条件まで、処理をくり返します。
次のように書きます。
{開始:@iは整数型 = 0 , 条件:@i < 100 ,変化:@i += 1}のくりかえし{ {x:@i, y:@i}に{幅:30, 高さ:30}のマル }
特定の条件の間、処理をくり返します。
次のように書きます。
@yは整数型 = 0 {条件:@y < @高さ}のあいだ{ {x:50, y:@y}に{幅:30, 高さ:30}のマル @y += 20 }
自分なりの命令語を定義しておくと、ほかの場所から自由に呼び出すことができます。
特定の処理をまとめておいたり、プログラムを分かりやすくするために使います。
命令語を定義すると、関数やメソッドとして利用できます。
また、「初期設定する」や「くり返し描画する」のように、あらかじめ決められた命令語をプログラム中で定義すると、プログラムの実行環境から呼び出される場合もあります。
命令語の定義には、次の4種類の書き方があります。
---(命令語名){//ここを実行}
---(命令語名)は(戻り値データ型){//ここを実行}
---{引数名1:値1, ...}(助詞){引数名2:値2, ...}(助詞)(命令語名){//ここを実行}
---{引数名1:値1, ...}(助詞){引数名2:値2, ...}(助詞)(命令語名)は(データ型){//ここを実行}
最後の(戻り値データ型)を指定している場合は、戻り値のデータ型を指定します。
戻り値なしの場合は省略します(void)。
以下、サンプル
---実行する{ //ここを実行 }
---実行するは整数型{ //ここを実行 {戻り値:100}でもどる }
---{引数:@xは整数型}で実行する{ //ここを実行 }
---{引数:@xは整数型}で実行するは実数型{ //ここを実行 {戻り値:10.2}でもどる }
「型」は、自分なりのデータ型を作成する機能です。ひとつの型に複数のデータをまとめたり、データと命令を組み合わせておくことができます。作成した型は、データ型と同じように使うことができます。
次のように書きます。
===(型名) { //ここに型定義を書く (型が持つデータ) +++(初期命令){ } ---(独自命令){ } }
初期命令は、その型をもったデータを作るとき、最初に呼び出す命令です。型名と同じ名前にします。引数を指定でき、戻り値は省略します。
独自命令は、そのデータ型の専用命令です(オブジェクト指向のメソッドにあたります)。さきほど説明した、独自命令の定義と書き方は同じです。
定義した型を利用するには、まず型を代入する変数を定義します。それから「新しい」命令といっしょに呼び出して、変数に代入します。このとき、引数を指定して初期値を代入できます。初期命令と型名は同じ名前になっています。
@(変数名)は(型名) @(変数名)=新しい(初期命令) #「新しく」も使えます
型が持つ独自命令を呼び出すには、次のようにします。
@(変数名)、(独自命令) @(変数名)、(引数)(独自命令)
型が持つ独自データを呼び出すには、次のようにします。
@(変数名)の@(独自データ)
そら豆スクリプト(soramame.ps.js)は、日本語っぽいコードをProcessing.jsのコードに変換して実行します。
そら豆スクリプトの命令や環境変数を、Processing.jsのどのメソッドやプロパティに対応付けるかは、あらかじめ設定してあります。
この設定を追加することで、新しい命令や変数をサポートできます。
設定を追加するには、「lib_command.js」ファイルを編集します。
下記は、「lib_command.js」の一部です。
//変換候補データ - 命令 //元データ : 変換先データ this.commands = { //Structure サイズ : 'size', 初期設定する : 'setup', くり返し描画する : 'draw', もどる : 'return',
このファイルに、次のような形式で、変換前の単語(そら豆)と変換後の単語(Processing)を対応付けます。
末尾の「,」(コンマ)を忘れないようにしましょう。
(そら豆) : '(Processing)',
このファイルを書き換えたら、Webブラウザをリロードするだけ
「lib_command.js」には、次の4つの種類を記述できます。
命令語をメソッドに変換します。
引数を持つことができます。
環境変数や定数名に変換します。
そら豆スクリプトのコード内で記述するときには、 環境変数には先頭に「@」を付けます。
定数には先頭に「$」を付けます。
データ型名やクラス名に変換します。
そら豆スクリプトのコード内で記述するときには、
「変数名は(データ型名)」と記述します。
特定のクラスに属するプロパティ名・メソッド名に変換します。
そら豆スクリプト側は、属するクラス名(変換後)と、プロパティ名・メソッド名(変換前)を
"_"(アンダーバー)でつなぎます。
そら豆スクリプトは、C言語やJava・Rubyといった、広く普及しているALGOL系プログラミング言語と同じような文法を備えています。
とくに、基本的な考え方は、Javaによく似ています。
とゆーか、Processing/Processing.jsに変換しているだけなので、その文法とほぼ同じです。