この規格ページの目次
55
X 3017 : 2013 (ISO/IEC 30170 : 2012)
I) 名前がNであるSymbolクラスの直接のインスタンスをAの先頭に追加する。
II) を実引数,Bを《ブロック》として,現在のselfに対しmethodmissingメソッド(15.3.1.3.30
参照)を呼び出す。
III) 呼出し結果の値を《super式》の値とし,《super式》の評価を終了する。
3) がModuleクラスのインスタンスであり,Classクラスのインスタンスではない場合,次の手順
を行う。
i) CをMとし,現在のselfのクラスを新たなCとする。
ii) のインクルードモジュールリストLmに,Mが含まれているどうかを確認する。
iii) が見つかった場合,次の手順を行う。
I) m中のモジュールに対して逆順に,Mの直前のモジュールから,先頭のモジュールまで処理す
る。それぞれのモジュールに対して,そのインスタンスメソッド束縛の集合内に,名前がNで
あるメソッド束縛が存在するかどうか確認する。
II) 束縛が見つかり,その値がundefでない場合,その束縛の値をVとする。
III) 束縛が見つかり,その値がundef(13.1.1参照)である場合,手順c) 2) ii) )から手順c) 2) ii) II)
までを行う。
IV) 束縛が見つからず,Cが直接のスーパークラスをもつ場合,そのスーパークラスをSとし,手
順c) 2)を行う。ここで,手順c) 2)のCはSであるとする。
V) 束縛が見つからず,Cが直接のスーパークラスをもたない場合,手順c) 2) ii) )から手順c) 2) ii)
III)までを行う。
iv) そうではない場合,Cの直接のスーパークラスを新たなCとし,手順c) 3) i)から繰り返す。Cが
直接のスーパークラスをもたない場合の動作は未規定とする。
d) 13.3.3のg),h),i)及びj)を実行する。ここで,13.3.3のA,B,M,R及びVは,それぞれ,この細分
箇条のA,B,N,現在のself及びVとする。《super式》の値は,これらの手順の実行結果の値とする。
11.3.5 yield式
構文規則
《yield式》 ::=
《省略可能実引数付きyield》
|《実引数付きyield》
《省略可能実引数付きyield》 ::
《括弧・実引数付きyield》
|《括弧付き実引数なしyield》
|“yield”
《括弧・実引数付きyield》 ::
“yield” [《行終端子》禁止] [《空白類》禁止] “(” 《実引数リスト》 “)”
《括弧付き実引数なしyield》 ::
“yield” [《行終端子》禁止] [《空白類》禁止] “(” “)”
《実引数付きyield》 ::
“yield” 《括弧なし実引数》
《括弧・実引数付きyield》の《実引数リスト》(11.3.2参照)に,《ブロック実引数》が存在してはならない。
――――― [JIS X 3017 pdf 61] ―――――
56
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《実引数付きyield》の《括弧なし実引数》の《実引数リスト》に,《ブロック実引数》が存在してはならない
(11.3.2参照)。
意味規則
《yield式》は,次の手順で評価する。
a) ブロック の一番上の要素をBとする。Bがblock-not-givenの場合,次の手順を行う。
1) 名前が “noreason” であるSymbolクラスの直接のインスタンスを,Sとする。
2) 処理系定義の値をVとする。
3) 名前が “@reason” であって値がSであるインスタンス変数束縛と,名前が “@exitvalue” で
あって値がVであるインスタンス変数束縛とをもつLocalJumpErrorクラスの直接のインスタン
スを例外として発生させる。
b) 《省略可能実引数付きyield》は,次の手順で評価する。
1) 《省略可能実引数付きyield》が《括弧・実引数付きyield》という形式の場合,11.3.2で規定するとおり
に,《実引数リスト》から実引数のリストを作成する。作成されたリストをLとする。
2) 《省略可能実引数付きyield》が《括弧付き実引数なしyield》又は “yield” のいずれかの形式の場合,
空の実引数のリストを作成する。そのリストをLとする。
3) を実引数としてBを呼び出す(11.3.3参照)。
4) 《ブロック》呼出しの評価結果の値を,《省略可能実引数付きyield》の値とする。
c) 《実引数付きyield》は,次の手順で評価する。
1) 11.3.2で規定するとおりに,《括弧なし実引数》から実引数のリストを作成する。作成されたリスト
をLとする。
2) 11.3.3で規定するとおりに,Lを実引数としてBを呼び出す。
3) 《ブロック》呼出しの評価結果の値を,《実引数付きyield》の値とする。
11.4 演算子式
11.4.1 概要
構文規則
《演算子式》 ::
《代入式》
|《括弧なしdefined・式》
|《条件演算子式》
《代入式》については,11.4.2を参照。
注記1 《代入文》は《演算子式》ではなく,《文》(12.1参照)である。
《括弧なしdefined・式》については,11.4.3.2を参照。
注記2 《括弧付きdefined・式》は,《演算子式》ではなく《一次式》(11.5.1参照)である。
《条件演算子式》については,11.5.2.2.5を参照。
――――― [JIS X 3017 pdf 62] ―――――
57
X 3017 : 2013 (ISO/IEC 30170 : 2012)
11.4.2 代入
11.4.2.1 概要
構文規則
《代入》 ::=
《代入式》
|《代入文》
《代入式》 ::
《単一代入式》
|《演算付き代入式》
|《rescue修飾子付き代入》
《代入文》 ::
《単一代入文》
|《演算付き代入文》
|《多重代入文》
意味規則
《代入》は,変数束縛の作成若しくは更新を行うか,又は,“=” で終わる名前のメソッドの呼出しを行う。
《代入式》及び《代入文》の評価は,11.4.2.211.4.2.5で規定するとおりに行う。
11.4.2.2 単一代入
11.4.2.2.1 概要
構文規則
《単一代入》 ::=
《単一代入式》
|《単一代入文》
《単一代入式》 ::
《単一変数代入式》
|《スコープ付き定数代入式》
|《単一添字代入式》
|《単一メソッド代入式》
《単一代入文》 ::
《単一変数代入文》
|《スコープ付き定数代入文》
|《単一添字代入文》
|《単一メソッド代入文》
――――― [JIS X 3017 pdf 63] ―――――
58
X 3017 : 2013 (ISO/IEC 30170 : 2012)
11.4.2.2.2 単一変数代入
構文規則
《単一変数代入》 ::=
《単一変数代入式》
|《単一変数代入文》
《単一変数代入式》 ::
《変数》 [《行終端子》禁止] “=” 《演算子式》
《単一変数代入文》 ::
《変数》 [《行終端子》禁止] “=” 《括弧なしメソッド呼出し》
意味規則
《単一変数代入》は,次の手順で評価する。
a) 《演算子式》又は《括弧なしメソッド呼出し》を評価する。Vを評価結果の値とする。
b) 1) 《変数》(11.5.4参照)が《定数識別子》の場合,次の手順を行う。
i) Nをその《定数識別子》とする。
ii) 現在のクラス又はモジュールの定数束縛の集合内に,名前がNである束縛が存在する場合,その
束縛の値をVで置き換える。
iii) そうではない場合,名前がNで,値がVである束縛を作成し,それを現在のクラス又はモジュー
ルの定数束縛の集合に追加する。
2) 《変数》が《大域変数識別子》の場合,次の手順を行う。
i) Nをその《大域変数識別子》とする。
ii) 名前がNである束縛が, 大域変数束縛集合 内に存在する場合,その束縛の値をVで置き換える。
ただし,その束縛が,実行環境の初期化時に処理系が追加した束縛(7.2参照)である場合,その
動作は未規定とする。
大域変数束縛集合
iii) そうではない場合,名前がNで,値がVである束縛を作成し,それを に追加
する。
3) 《変数》が《クラス変数識別子》の場合,次の手順を行う。
i) クラスモジュールリストの一番上のリスト内の,特異クラスでない最初のクラス又はモジュー
ルを,Cとする。
Cとその全てのスーパークラスとを含む集合を,CSとする。CSのそれぞれの要素のインクル
ードモジュールリストについて,そこに含まれるモジュールを全て合わせた集合を,MSとする。
CS及びMSの和集合を,CMとする。
Nをその《クラス変数識別子》とする。
ii) M内のクラス又はモジュールに,そのクラス変数束縛の集合内に名前がNである束縛をもつも
のが一つだけ存在した場合,その束縛をBとする。
CM内のクラス又はモジュールのうち,二つ以上のクラス又はモジュールが,名前がNである
束縛をそのクラス変数束縛の集合内にもつ場合,これらの束縛の中から,処理系定義のやり方で,
束縛Bを選ぶ。
Bの値を,Vで置き換える。
iii) M内のクラス又はモジュールに,名前がNである束縛をそのクラス変数束縛の集合内にもつも
――――― [JIS X 3017 pdf 64] ―――――
59
X 3017 : 2013 (ISO/IEC 30170 : 2012)
のが存在しなかった場合は,名前がNで,値がVである束縛を作成し,それをCのクラス変数束
縛の集合に追加する。
4) 《変数》が《インスタンス変数識別子》の場合,次の手順を行う。
i) Nをその《インスタンス変数識別子》とする。
ii) 現在のselfのインスタンス変数束縛の集合内に,名前がNである束縛が存在する場合,その束縛
の値をVで置き換える。
iii) そうではない場合,名前がNで,値がVである束縛を作成し,それを現在のselfのインスタンス
変数束縛の集合に追加する。
5) 《変数》が《局所変数識別子》の場合,次の手順を行う。
i) Nをその《局所変数識別子》とする。
ii) 名前がNである局所変数束縛を,9.2で規定するとおりに探す。
iii) 束縛が見つかった場合,その値をVで置き換える。
iv) そうではない場合,名前がNで,値がVである束縛を作成し,それを現在の局所変数束縛の集合
に追加する。
c) 《単一変数代入》の値は,Vとする。
11.4.2.2.3 スコープ付き定数代入
構文規則
《スコープ付き定数代入》 ::=
《スコープ付き定数代入式》
|《スコープ付き定数代入文》
《スコープ付き定数代入式》 ::
《一次式》 [《行終端子》禁止] [《空白類》禁止] “::” 《定数識別子》
[《行終端子》禁止] “=” 《演算子式》
|“::” 《定数識別子》 [《行終端子》禁止] “=” 《演算子式》
《スコープ付き定数代入文》 ::
《一次式》 [《行終端子》禁止] [《空白類》禁止] “::” 《定数識別子》
[《行終端子》禁止] “=” 《括弧なしメソッド呼出し》
|“::” 《定数識別子》 [《行終端子》禁止] “=” 《括弧なしメソッド呼出し》
意味規則
《スコープ付き定数代入》は,次の手順で評価する。
a) 《一次式》が存在する場合,それを評価し,評価結果の値をMとする。そうではない場合,MをObject
クラスとする。
b) がModuleクラスのインスタンスの場合,次の手順を行う。
1) を《定数識別子》とする。
2) 《演算子式》又は《括弧なしメソッド呼出し》を評価する。Vを評価結果の値とする。
3) の定数束縛の集合内に,名前がNである束縛が存在する場合,その束縛の値をVで置き換える。
4) そうではない場合,名前がNで,値がVである束縛を作成し,それをMの定数束縛の集合に追加
する。
5) 《スコープ付き定数代入》の値は,Vとする。
――――― [JIS X 3017 pdf 65] ―――――
次のページ PDF 66
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語