この章では、スクリプトを実行するためのデータの集まりである 実行コンテクストについて定義する。
スクリプトプログラムの実行が開始されるとき、または、実行中にある条件が 満たされたとき、実行コンテクストという特殊な情報の集まりが作られ、 スクリプトプログラムはその情報の内容に基づいて実行される。 一つの実行コンテクストが持つ情報は以下の通りである:
変数領域は、変数をそのメンバとして管理するオブジェクトである。 すなわち、変数とは変数領域のメンバのことである。
全ての変数はある特定の変数領域に対して設定される。 変数の名前とは対応する変数領域のメンバの名前であり、 変数の値とは対応する変数領域のメンバの値である。
ある実行コンテクストが持つ変数領域は不変である。 (これは、変数領域のメンバすなわち変数が不変であることを意味しない。)
@this 値は実行コンテクストに関連づけられる一つのオブジェクトで、 その実行コンテクストについて不変である。(これは、@this 値のメンバが不変であることを意味しない。)
デフォルトの精度は一つの原始制限実数型の値である。この値は無限大ではない正数でなければならない。
デフォルトの精度は、Float
の値を使った演算の精度を指定するのに使用する。
デフォルトの精度の値は、不変ではない。
基底実行コンテクストを除く全ての実行コンテクストはそれ自身とは異なる実行コンテクストを親実行コンテクストとして関連づけられる。
親実行コンテクストは実行コンテクストが生成される際に決定し、 その実行コンテクストについて不変である。
基底実行コンテクストは、スクリプトプログラムの実行を開始する際に 作られる最も基礎的な実行コンテクストである。 基底実行コンテクストは、親実行コンテクストを持たない。
基底実行コンテクストが持つデフォルトの精度は実行環境の裁量によって決定する。また基底実行コンテクストの @this 値は初期の Void.void である。
基底実行コンテクストの変数領域は基底変数領域という。
また、基底変数領域のプロトタイプは組込み変数領域という。
スクリプトが対話形式で実行される場合、組込み変数領域のプロトタイプは初期の Math 組込みオブジェクトと同じでなければならない。
スクリプトがバッチ形式で実行される場合、組込み変数領域はプロトタイプを持たない。
組込み変数領域は、以下に挙げる特定のメンバを 初めから備えていなければならない。 これらのオブジェクトは全て互いに異なるオブジェクトであり、また基底変数領域 および組込み変数領域とも異なるものとする。
ObjectTypeVoidNullBooleanNumberRealIntegerRationalFloatComplexInfinityNaNMathStringFunctionEnumListErrorTypeErrorNotExistsErrorNotAssignableErrorNotDeletableErrorNotCallableErrorOutOfRangeErrorArgumentErrorNumberOfArgumentsErrorUnsupportedOperationErrorReadOnlyErrorDimensionErrorCalculationErrorOverflowErrorSyntaxError組込み変数領域に予め含まれているこれらのオブジェクトやそのメンバの値である オブジェクトは、組込みオブジェクトという。
実行環境はその裁量によって、この仕様で定めるものの他に、 実行環境が定義したメンバを基底変数領域・組込み変数領域に 予め加えておくことが出来る。 また、組込みオブジェクトに対しても、この仕様に定めるものの他に、 実行環境が定義したメンバを予め加えておくことができる。
この仕様で定められたオブジェクト (基底変数領域・組込み変数領域を含む) は、基底実行コンテクストが作られた時点において、この仕様で直接的にも間接的にも 定められていない内部メンバを持っていてはならない。
© 2006-2007 Magicant