原始型

この章では、実行環境の振舞いを規定する原始型について定義する。

原始型の定義

原始型は、スクリプトの動作の定義ために定義された 特殊な抽象的データ形式である。 原始型に属するデータをスクリプトプログラムによって直接扱うことはできない。

結果型

結果型のデータは、処理を実行した結果についての情報であり、種類の組から成る。誤解の虞のない限り、 結果型のデータのことを単に結果と呼ぶ。 結果型の種類には以下の五つがある:

正常終了
処理が正常に終了したことを表す。 正常終了の結果の値は、一つの他の原始型の値またはオブジェクトである。
エラー終了
エラーが投げられることによって処理が終了したことを表す。 エラー終了の結果の値は、一つのオブジェクトによって構成される。
Break 終了
Break 文が実行されたことを表す。 Break 終了の結果の値は、移動先を表す一つの Unicode 文字列で構成される。
Continue 終了
Continue 文が実行されたことを表す。 Continue 終了の結果の値は、移動先を表す一つの Unicode 文字列で構成される。
復帰終了
復帰文が実行されたことを表す。 復帰終了の結果の値は、一つの他の原始型の値またはオブジェクトである。

原始整数型

原始整数型のデータは、数学的な意味での整数である。すなわち、 正の整数 (1, 2, 3, …)、0、負の整数 (−1, −2, −3, …) のどれか一つの値である。 原始整数型の値の範囲に理論的な制限はないが、 実行時に計算機の性能などによって実際的な制限が課される。

原始実数型

原始実数型のデータは、数学的な意味での実数である。 原始実数型の値の範囲に理論的な制限はないが、 実行時に計算機の性能などによって実際的な制限が課される。 ただし、原始実数型の値が取りうる値の範囲は、原始整数型の値が取りうる値をすべて 含んでいなければならない。

実装上の注意: 原始実数型の値が取りうる具体的な値の範囲は、 実行環境の実装によって異なるが、できる限り稠密であるのが望ましい。 例えば、二つの原始整数型の値 se により、十進浮動小数点数 s × 10e を作り、これを原始実数型の値とすることができる。 このようにして構成される原始実数型は、実用上十分な稠密さを持つ。 実行環境はさらに、√2 や π などの無理数を原子実数型の値として取れるように実装することもできる。 しかしこれらは、原始実数型の取れる値の範囲における必須の条件ではない。

原始制限実数型

原始制限実数型のデータは、数学的な意味での実数であるか、または無限大という特殊な値である。

原始実数型の表す実数の値の範囲に理論的な制限はないが、 実行時に計算機の性能などによって実際的な制限が課される。 ただし、この範囲には −100000000 以上 100000000 以下の整数が全て含まれていなければならない。

原始制限実数型における演算は、できるだけ正確に (誤差がないように) 行うものとする。ただし実行環境は、原始制限実数型における演算の結果が再び 有効な原子制限実数型の値となるように、その裁量により適切に値を丸めるものとする。 特に、演算の結果の値が大きすぎるときは、結果を無限大としても良い。

実装上の注意: 原始制限実数型の表しうる実数の範囲は、 原始実数型ほどには広くなくても良いが、しかしできる限り稠密であるのが望ましい。 例えば、原始制限実数型の値として、IEEE 754 規格で定義される 64 ビット二進浮動小数点数を使用することができる。

参照型

参照型のデータ (参照) は、 値を代入したり参照したりすることの出来る記憶域を表す。

参照型の値に対して代入や参照を行うために、以下の動作を定義する:

check-reference-value
check-reference-value は一つの参照に対して行う動作である。 この動作の具体的な処理内容は、その参照によって異なる。 ただし、check-reference-value の実行結果の種類は初期の Boolean.true または初期の Boolean.false のどちらかを値とする正常終了でなければならない。
get-reference-value
get-reference-value は一つのオブジェクトまたは原始型の値に対して行う動作である。
参照型の値に対して get-reference-value を実行したときの具体的な処理内容は、その参照型の値によって異なる。 ただし、get-reference-value の実行結果の種類は正常終了とエラー終了のどちらかでなければならない。 また、実行結果の種類がが正常終了ならば、 その値はオブジェクトでなければならない。
結果型の値 r に対して get-reference-value を実行した場合の具体的な処理内容は、以下の通りである:
  1. r が正常終了でなければ、r を返す。
  2. r が正常終了ならば、r の値に対して get-reference-value を実行し、その結果を返す。
参照型および結果型以外の値 v に対して get-reference-value を実行した場合の結果は、[[v]] である。
set-reference-value
set-reference-value は一つの参照と一つのオブジェクトに対して行う 動作である。この動作の具体的な処理内容は、その参照によって異なる。 ただし、get-reference-value の実行結果の種類は正常終了とエラー終了の どちらかでなければならない。また、実行結果の種類が正常終了ならば、 その値はオブジェクトでなければならない。
delete-reference-value
delete-reference-value は一つの参照に対して行う動作である。 この動作の具体的な処理内容は、その参照によって異なる。 ただし、delete-reference-value の実行結果の種類は正常終了とエラー終了の どちらかでなければならない。また、実行結果の種類が正常終了ならば、 その値はオブジェクトでなければならない。

メンバ参照型

メンバ参照型は、参照型の一種であり、あるオブジェクトのメンバへの 参照を表す。メンバ参照型のデータすなわちメンバ参照は、参照先オブジェクトという一つのオブジェクトと参照先メンバ名という一つの Unicode 文字列から成る。

メンバ参照型の値 r に対して check-reference-value を実行したときの具体的な処理内容は、以下の通りである:

  1. r に対して check-property を実行し、その結果を返す。

メンバ参照型の値 r に対して get-reference-value を実行したときの具体的な処理内容は、以下の通りである:

  1. r に対して get-property を実行し、その結果を r とする。
  2. r の値がオブジェクトでなければ、新しい NotExistsError のインスタンスを投げる。
  3. r を返す。

メンバ参照型の値 r とオブジェクト o に対して set-reference-value を実行したときの具体的な処理内容は、以下の通りである:

  1. ro に対して set-property を実行し、その結果を返す。

メンバ参照型の値 r に対して delete-reference-value を実行したときの具体的な処理内容は、以下の通りである:

  1. r に対して delete-property を実行し、その結果を返す。

原始リスト型

原始リスト型の値 (原始リスト) は、任意の個数 (0 個を含む) のデータの順序付き配列である。

任意の原始リスト l に対して、それに含まれるデータの個数を l.count で表す。原始リストに含まれるデータは、1 から l.count までの自然数を添字として区別する。原始リスト l に含まれる i 個目のデータを、l[i] で表す。

© 2006-2007 Magicant