75
X 3017 : 2013 (ISO/IEC 30170 : 2012)
1) それぞれの《when節》を,それらがプログラムテキストに現れる順に,マッチするかどうか次のとお
り調べる。
i) 《when実引数》の《演算子式リスト》が存在する場合,次の手順を行う。
I) そのそれぞれの《演算子式》を評価し,評価結果の値がマッチするかどうか判断する。
II) マッチする値が見つかった場合,残りの《演算子式》は(もしあっても)評価しない。
ii) マッチする値が見つからず,《散開実引数》(11.3.2参照)が存在する場合,次の手順を行う。
I) 11.3.2で規定するとおりに,《散開実引数》から値のリストを作成する。そのリストのそれぞれ
の要素について,添字順に,マッチする値かどうかを判断する。
II) マッチする値が見つかった場合,リスト内の残りの値は,(もしあっても)評価しない。
iii) 《when節》は,その《when実引数》の中にマッチする値が見つかった場合に限り,マッチするとみ
なす。この場合,残りの《when節》は,(もしあっても)判断を行わない。
2) マッチする《when節》が見つかった場合,その《when節》の《then節》の《複合文》を評価する。評価結
果の値を《case式》の値とする。
3) マッチする《when節》が見つからず,《else節》が存在する場合,《else節》の《複合文》を評価する。評
価結果の値を《case式》の値とする。
4) それ以外の場合,《case式》の値はnilとする。
11.5.2.2.5 条件演算子式
構文規則
《条件演算子式》 ::
《範囲式》
|《範囲式》 [《行終端子》禁止] “・” 《演算子式》1 [《行終端子》禁止] “:” 《演算子式》2
意味規則
《範囲式》 “・” 《演算子式》1 “:” 《演算子式》2という形式の《条件演算子式》は,次の手順で評価する。
a) 《範囲式》を評価する。
b) 評価結果の値が真の場合,《演算子式》1を評価し,その結果の値を《条件演算子式》の値とする。
c) そうではない場合,《演算子式》2を評価し,評価結果の値を《条件演算子式》の値とする。
11.5.2.3 繰返し式
11.5.2.3.1 概要
構文規則
《繰返し式》 ::=
《while式》
|《until式》
|《for式》
|《while修飾文》
|《until修飾文》
それぞれの《繰返し式》は条件式及び本体をもつ。
《繰返し式》の条件式は,《繰返し式》の繰返しの条件を決めるために評価される部分である。《while式》
(11.5.2.3.2参照),《until式》(11.5.2.3.3参照),《for式》(11.5.2.3.4参照),《while修飾文》(12.5参照)又
は《until修飾文》(12.6参照)の条件式は,その《式》とする。
――――― [JIS X 3017 pdf 81] ―――――
76
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《繰返し式》の本体は,《繰返し式》で繰り返し評価される部分である。《while式》,《until式》又は《for式》
の本体は,その《do節》の《複合文》とする。《while修飾文》又は《until修飾文》の本体は,その《文》とする。
《while修飾文》については,12.5を参照。
《until修飾文》については,12.6を参照。
11.5.2.3.2 while式
構文規則
《while式》 ::
“while” 《式》 《do節》 “end”
《do節》 ::
《分離子》 《複合文》
|[《行終端子》禁止] “do” 《複合文》
意味規則
《while式》は,次の手順で評価する。
a) 《式》を評価し,次の手順を行う。
1) この《式》の評価が《break式》(11.5.2.4.3参照)によって終了された場合,《while式》の評価を終了す
る。
《break式》の《ジャンプ実引数》が存在する場合,《while式》の値は《ジャンプ実引数》の値とする。
そうではない場合,《while式》の値はnilとする。
2) この《式》の評価が《next式》(11.5.2.4.4参照)又は《redo式》(11.5.2.4.5参照)によって終了された場
合,手順a)の最初から繰り返す。
3) それ以外の場合,この《式》の評価結果の値をVとする。
b) が偽の場合,《while式》の評価は,評価結果をnilとして終了する。
c) が真の場合,《do節》の《複合文》を評価し,次の手順を行う。
1) この《複合文》の評価が《break式》によって終了された場合,《while式》の評価を終了する。
《break式》の《ジャンプ実引数》が存在する場合,《while式》の値は《ジャンプ実引数》の値とする。
そうではない場合,《while式》の値はnilとする。
2) この《複合文》の評価が《next式》によって終了された場合,手順a)から繰り返す。
3) この《複合文》の評価が《redo式》によって終了された場合,手順c)から繰り返す。
4) それ以外の場合,手順a)から繰り返す。
11.5.2.3.3 until式
構文規則
《until式》 ::
“until” 《式》 《do節》 “end”
意味規則
《until式》は,次の手順で評価する。
a) 《式》を評価し,次の手順を行う。
1) この《式》の評価が《break式》(11.5.2.4.3参照)によって終了された場合,《until式》の評価を終了す
る。
《break式》の《ジャンプ実引数》が存在する場合,《until式》の値は《ジャンプ実引数》の値とする。
――――― [JIS X 3017 pdf 82] ―――――
77
X 3017 : 2013 (ISO/IEC 30170 : 2012)
そうではない場合,《until式》の値はnilとする。
2) この《式》の評価が《next式》(11.5.2.4.4参照)又は《redo式》(11.5.2.4.5参照)によって終了された場
合,手順a)の最初から繰り返す。
3) それ以外の場合,この《式》の評価結果の値をVとする。
b) が真の場合,《until式》の評価は,評価結果をnilとして終了する。
c) が偽の場合,《do節》の《複合文》を評価し,次の手順を行う。
1) この《複合文》の評価が《break式》によって終了された場合,《until式》の評価を終了する。
《break式》の《ジャンプ実引数》が存在する場合,《until式》の値は《ジャンプ実引数》の値とする。
そうではない場合,《until式》の値はnilとする。
2) この《複合文》の評価が《next式》によって終了された場合,手順a)から繰り返す。
3) この《複合文》の評価が《redo式》によって終了された場合,手順c)から繰り返す。
4) それ以外の場合,手順a)から繰り返す。
11.5.2.3.4 for式
構文規則
《for式》 ::
“for” 《for変数》 [《行終端子》禁止] “in” 《式》 《do節》 “end”
《for変数》 ::
《左辺》
|《多重代入左辺》
意味規則
《for式》は,次の手順で評価する。
a) 《式》を評価する。この《式》の評価が《break式》,《next式》又は《redo式》によって終了された場合の動作
は未規定とする。そうではない場合,Oを評価結果の値とする。
b) 《一次式》 [《行終端子》禁止] “.” “each” “do” “|” 《ブロック仮引数リスト》 “|” 《ブロック本体》
“end” という形式の《一次式メソッド呼出し》を,Eとする。ここで,《一次式》の値はO,《ブロック
仮引数リスト》は《for変数》,《ブロック本体》は《do節》の《複合文》とする。
Eを評価する。ただし,評価中にこの《for式》の《do節》の《複合文》を《ブロック本体》とする《ブロッ
ク》呼出しが行われた場合,その呼出しの評価は,11.3.3の手順a)から手順g)までのうち,手順c)及び
手順e) 4)を除いたものを実行する。
c) 評価結果の値を《for式》の値とする。
11.5.2.4 ジャンプ式
11.5.2.4.1 概要
構文規則
《ジャンプ式》 ::=
《return式》
|《break式》
|《next式》
|《redo式》
|《retry式》
――――― [JIS X 3017 pdf 83] ―――――
78
X 3017 : 2013 (ISO/IEC 30170 : 2012)
意味規則
《ジャンプ式》は,《メソッド本体》,《ブロック本体》,《繰返し式》の条件式若しくは本体,又は《rescue節》
の《then節》の《複合文》の評価を終了させるために使用される。《ジャンプ式》によって終了されたそのプロ
グラム構成要素自身,及びそのプログラム構成要素に含まれ,かつ,《ジャンプ式》の評価開始時に評価中
であったプログラム構成要素は,評価手順の途中でその評価を終了し,評価結果の値をもたない。
この規格では,現在の《ブロック》又は現在の《繰返し式》という表現は次のものを指す。
a) 現在のメソッド呼出しが存在しない場合は,現在評価中の《ブロック》又は《繰返し式》のうち,最近に
評価を開始した《ブロック》又は《繰返し式》。
b) 現在のメソッド呼出しが存在する場合は,現在のメソッド呼出しの評価中に評価が開始され,現在も
評価中の《ブロック》又は《繰返し式》のうち,最近に評価を開始した《ブロック》又は《繰返し式》。
いずれの場合も,そのようなものが存在しない場合は,現在の《ブロック》又は現在の《繰返し式》は存在
しない。
11.5.2.4.2 return式
構文規則
《return式》 ::=
《実引数なしreturn》
|《実引数付きreturn》
《実引数なしreturn》 ::
“return”
《実引数付きreturn》 ::
“return” 《ジャンプ実引数》
《ジャンプ実引数》 ::
[《行終端子》禁止] 《実引数リスト》
《ジャンプ実引数》の《実引数リスト》(11.3.2参照)には,《ブロック実引数》が存在してはならない。
意味規則
《return式》及び《ジャンプ実引数》は,次の手順で評価する。
a) 《return式》は,次の手順で評価する。
1) 現在のメソッド呼出しに対応する《メソッド本体》をMとする。現在評価中の《ブロック》であって,
かつ,Kernelモジュールのlambdaメソッド(15.3.1.2.6参照)によって作られたものをLとする。
そのような《ブロック》が複数存在する場合は,それらのうち最近に評価を開始したものをLとする。
2) もLも存在しない場合,又は,Mだけが存在するが現在のメソッド呼出しが終了している場合は,
次の手順を行う。
i) 名前が “return” であるSymbolクラスの直接のインスタンスを,Sとする。
ii) 《return式》の《ジャンプ実引数》が存在する場合,Vを《ジャンプ実引数》の値とする。そうではない
場合,Vをnilとする。
iii) 名前が “@reason” であって値がSであるインスタンス変数束縛と,名前が “@exitvalue” で
あって値がVであるインスタンス変数束縛とをもつLocalJumpErrorクラスの直接のインスタ
ンスを例外として発生させる。
3) 《ジャンプ実引数》が存在する場合,それを手順b)で規定されているとおりに評価する。
――――― [JIS X 3017 pdf 84] ―――――
79
X 3017 : 2013 (ISO/IEC 30170 : 2012)
4) の評価がLの評価より後に開始されていた場合,次の手順を行う。
i) この《return式》を含み,かつ,Mに含まれているような《ブロック本体》が一つ以上存在する場合,
それらの《ブロック本体》について,内側から外側へと順に,その評価を終了させる(11.3.3参照)。
ii) の評価を終了する(13.3.3参照)。
5) そうではない場合,次の手順を行う。
i) Lが現在の《ブロック》である場合,Lの評価を終了させる[15.3.1.2.6 b)参照]。
ii) そうではない場合,動作は未規定とする。
b) 《ジャンプ実引数》は,次の手順で評価する。
1) 《ジャンプ実引数》が《散開実引数》の場合,次の手順を行う。
i) 11.3.2で規定するとおりに《散開実引数》から値のリストを構築し,そのリストをLとする。
ii) の長さが0又は1の場合,《ジャンプ実引数》の値は処理系定義とする。
iii) の長さが1より大きい場合,Arrayクラスの直接のインスタンスを作成し,それにLの要素を
同じ順序で保存する。《ジャンプ実引数》の値はこのArrayクラスのインスタンスとする。
2) そうではない場合,次の手順を行う。
i) 11.3.2で規定するとおりに《実引数リスト》から値のリストを構築し,そのリストをLとする。
ii) の長さが1の場合,《ジャンプ実引数》の値はLの唯一の要素とする。
iii) の長さが1より大きい場合,Arrayクラスの直接のインスタンスを作成し,それにLの要素を
同じ順序で保存する。《ジャンプ実引数》の値はこのArrayクラスのインスタンスとする。
11.5.2.4.3 break式
構文規則
《break式》 ::=
《実引数なしbreak》
|《実引数付きbreak》
《実引数なしbreak》 ::
“break”
《実引数付きbreak》 ::
“break” 《ジャンプ実引数》
意味規則
《break式》は,次の手順で評価する。
a) 《ジャンプ実引数》が存在する場合,それを11.5.2.4.2 b)で規定するとおりに評価する。
b) 現在の《ブロック》が存在する場合,現在の《ブロック》の《ブロック本体》の評価を終了させる(11.3.3
参照)。
c) 現在の《繰返し式》が存在する場合,《break式》が現在の《繰返し式》の条件式内にあるときはその条件式
の評価を,本体内にあるときはその本体の評価を終了させる(11.5.2.3参照)。
d) 現在の《ブロック》又は現在の《繰返し式》が存在しない場合,次の手順を行う。
1) 名前が “break” であるSymbolクラスの直接のインスタンスを,Sとする。
2) 《break式》の《ジャンプ実引数》が存在する場合,Vをその《ジャンプ実引数》の値とする。そうではな
い場合,Vをnilとする。
3) 名前が “@reason” であって値がSであるインスタンス変数束縛と,名前が “@exitvalue” で
――――― [JIS X 3017 pdf 85] ―――――
次のページ PDF 86
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語