70
X 3017 : 2013 (ISO/IEC 30170 : 2012)
− 《ビット単位シフト式》の “<<”
− 《加減式》の “+”
− 《加減式》の “-”
− 《乗除式》の “*”
− 《乗除式》の “/”
− 《乗除式》の “%”
注記 例えば,“x-y” は《加減式》ではない。ただし,“x” が局所変数への参照である場合,“x-y”
を “x-y” という《加減式》と同じように評価してもよい。しかし,“x” が局所変数への参
照ではない場合は,“x-y” を “x()-y” ではなく “x(-y)” と同じ動作を行う《コマン
ド》(11.3.1参照)として評価しなければならない。ここで,“”は空白を表す。
意味規則
《等価式》は,次の手順で評価する。
a) 《等価式》がx “!=” yという形式の場合,次の手順を行う。
1) を評価し,Xを評価結果の値とする。
2) を評価し,Yを評価結果の値とする。
3) “==” メソッドを,Xに対し,Yを実引数として呼び出す。呼出し結果の値が真の場合,《等価式》の
値はfalseとする。それ以外の場合,《等価式》の値はtrueとする。
b) 手順a)の代わりに,手順f) 1) f) 3)を行ってもよい。この場合,次の条件が満たされなければならな
い。
− “!=” 演算子が《演算子メソッド名》に含まれている。
− Objectクラス,Objectクラスのいずれかのスーパークラス,又はObjectクラスがインクルー
ドしているいずれかのモジュールに,インスタンスメソッド “!=” が定義されている。“!=” メソ
ッドは実引数を一つとり,手順a) 3)の《等価式》の値を返さなければならない。ここで,X及びYは
それぞれレシーバ及び唯一の実引数であるとする。
c) 《等価式》がx “!~” yという形式の場合,次の手順を行う。
1) を評価し,Xを評価結果の値とする。
2) を評価し,Yを評価結果の値とする。
3) “=~” メソッドを,Xに対し,Yを実引数として呼び出す。呼出し結果の値が真の場合,《等価式》の
値はfalseとする。それ以外の場合,《等価式》の値はtrueとする。
d) 手順c)の代わりに,手順f) 1) f) 3)を行ってもよい。この場合,次の条件が満たされなければならな
い。
− “!~” 演算子が《演算子メソッド名》に含まれている。
− Objectクラス,Objectクラスのいずれかのスーパークラス,又はObjectクラスがインクルー
ドしているいずれかのモジュールに,インスタンスメソッド “!~” が定義されている。“!~” メソ
ッドは実引数を一つとり,手順c) 3)の《等価式》の値を返さなければならない。ここで,X及びYは
それぞれレシーバ及び唯一の実引数であるとする。
e) 《等価式》が《単項マイナス式》であり,《べき乗式》でない場合,11.4.3で規定するとおりに評価する。《等
価式》が《単項マイナス式》であり,《べき乗式》である場合,次の手順で《べき乗式》を評価し,その値を
《等価式》の値とする。
1) その《べき乗式》が《単項式》である場合,それを11.4.3.1で規定するとおりに評価し,評価結果の値
――――― [JIS X 3017 pdf 76] ―――――
71
X 3017 : 2013 (ISO/IEC 30170 : 2012)
を《べき乗式》の値とする。
2) その《べき乗式》が《単項式》 “**” 《べき乗式》という形式である場合,次の手順を行う。
i) 《単項式》が “-” 《符号なし数》という形式の《符号付き数》である場合,次の手順を行う。
I) 《符号なし数》を評価し,評価結果の値をXとする。
II) 《べき乗式》を評価し,評価結果の値をYとする。
III) 名前が “**” であるメソッドを,Xに対し,Yを実引数として呼び出す。Zを呼出し結果の値
とする。
IV) 名前が “-@” であるメソッドを,Zに対し,実引数なしで呼び出す。呼出し結果の値を《べき乗
式》の値とする。
ii) そうではない場合,次の手順を行う。
I) 《単項式》を評価し,評価結果の値をXとする。
II) 《べき乗式》を評価し,評価結果の値をYとする。
III) 名前が “**” であるメソッドを,Xに対し,Yを実引数として呼び出す。呼出し結果の値を《べ
き乗式》の値とする。
f) それ以外の場合,x 《2項演算子》 yという形式の《等価式》に対し,次の手順を行う。
1) を評価し,Xを評価結果の値とする。
2) を評価し,Yを評価結果の値とする。
3) 名前が《2項演算子》であるメソッドを,Xに対し,Yを実引数として呼び出す。《等価式》の値は,呼
出し結果の値とする。
――――― [JIS X 3017 pdf 77] ―――――
72
X 3017 : 2013 (ISO/IEC 30170 : 2012)
11.5 一次式
11.5.1 概要
構文規則
《一次式》 ::
《クラス定義》
|《特異クラス定義》
|《モジュール定義》
|《メソッド定義》
|《特異メソッド定義》
|《省略可能実引数付きyield》
|《if式》
|《unless式》
|《case式》
|《while式》
|《until式》
|《for式》
|《実引数なしreturn》
|《実引数なしbreak》
|《実引数なしnext》
|《redo式》
|《retry式》
|《begin式》
|《グループ化式》
|《変数参照》
|《スコープ付き定数参照》
|《配列生成子》
|《ハッシュ生成子》
|《リテラル》
|《括弧付きdefined・式》
|《一次式メソッド呼出し》
意味規則
《クラス定義》については,13.2.2を参照。
《特異クラス定義》については,13.4.2を参照。
《モジュール定義》については,13.1.2を参照。
《メソッド定義》については,13.3.1を参照。
《特異メソッド定義》については,13.4.3を参照。
《省略可能実引数付きyield》については,11.3.5を参照。
《リテラル》については,8.7.6を参照。
《括弧付きdefined・式》については,11.4.3.2を参照。
――――― [JIS X 3017 pdf 78] ―――――
73
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《一次式メソッド呼出し》については,11.3を参照。
11.5.2 制御構造
11.5.2.1 概要
構文規則
《制御構造》 ::=
《条件式》
|《繰返し式》
|《ジャンプ式》
|《begin式》
11.5.2.2 条件式
11.5.2.2.1 概要
構文規則
《条件式》 ::=
《if式》
|《unless式》
|《case式》
|《条件演算子式》
11.5.2.2.2 if式
構文規則
《if式》 ::
“if” 《式》 《then節》 《elsif節》* 《else節》・ “end”
《then節》 ::
《分離子》 《複合文》
|《分離子》・ “then” 《複合文》
《else節》 ::
“else” 《複合文》
《elsif節》 ::
“elsif” 《式》 《then節》
意味規則
《if式》は,次の手順で評価する。
a) 《式》を評価する。Vを評価結果の値とする。
b) が真の場合,《then節》の《複合文》を評価する。評価結果の値を《if式》の値とする。この場合,残り
の《elsif節》及び《else節》は,(もしあっても)評価しない。
c) が偽で,かつ,《elsif節》も《else節》も存在しない場合,《if式》の値はnilとする。
d) が偽で,かつ,《elsif節》が存在せず,《else節》が存在する場合,《else節》の《複合文》を評価する。評
価結果の値を《if式》の値とする。
e) が偽で,かつ,一つ以上の《elsif節》が存在する場合,それらを次の手順で評価する。
1) それぞれの《elsif節》について,その《式》の値が真であるようなものが見つかるまで,それらがプロ
グラムテキストに現れる順に,その《式》を評価する。見つかった《elsif節》をTとする。
――――― [JIS X 3017 pdf 79] ―――――
74
X 3017 : 2013 (ISO/IEC 30170 : 2012)
2) が存在する場合,その《then節》の《複合文》を評価する。評価結果の値を《if式》の値とする。残り
の《elsif節》及び《else節》は,(もしあっても)評価しない。
3) が存在せず,《else節》が存在する場合,《else節》の《複合文》を評価する。評価結果の値を《if式》の
値とする。
4) が存在せず,《else節》も存在しない場合,《if式》の値はnilとする。
11.5.2.2.3 unless式
構文規則
《unless式》 ::
“unless” 《式》 《then節》 《else節》・ “end”
意味規則
《unless式》は,次の手順で評価する。
a) 《式》を評価する。Vを評価結果の値とする。
b) が偽の場合,《then節》の《複合文》を評価する。評価結果の値を《unless式》の値とする。この場合,
残りの《else節》は,(もしあっても)評価しない。
c) が真で,《else節》が存在しない場合,《unless式》の値はnilとする。
d) が真で,《else節》が存在する場合,《else節》の《複合文》を評価する。評価結果の値を《unless式》の値
とする。
11.5.2.2.4 case式
構文規則
《case式》 ::
《式付きcase式》
|《式なしcase式》
《式付きcase式》 ::
“case” 《式》 《分離子リスト》・ 《when節》+ 《else節》・ “end”
《式なしcase式》 ::
“case” 《分離子リスト》・ 《when節》+ 《else節》・ “end”
《when節》 ::
“when” 《when実引数》 《then節》
《when実引数》 ::
《演算子式リスト》 ( [《行終端子》禁止] “,” 《散開実引数》 )・
|《散開実引数》
意味規則
《case式》は,次の手順で評価する。
a) 《case式》が《式付きcase式》の場合,《式》を評価する。Vを評価結果の値とする。
b) 手順c)で使われる“値Oはマッチする”という表現は次のとおり定義する。
1) 《case式》が《式付きcase式》の場合,Oに対し,“===” メソッドを,Vだけを含む実引数リストとと
もに呼び出す。呼出し結果の値が真である場合に限り,Oはマッチするとする。
2) 《case式》が《式なしcase式》の場合,Oが真である場合に限り,Oはマッチするとする。
c) 次の手順を行う。
――――― [JIS X 3017 pdf 80] ―――――
次のページ PDF 81
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語