JIS X 3017:2013 プログラム言語Ruby | ページ 19

                                                                                             85
X 3017 : 2013 (ISO/IEC 30170 : 2012)
c) M内のクラス又はモジュールのうちのただ一つが,名前がNである束縛をそのクラス変数束縛の集
合内にもつ場合,Vをその束縛の値とする。
d) M内のクラス又はモジュールのうち,二つ以上のクラス又はモジュールが,名前がNである束縛を
そのクラス変数束縛の集合内にもつ場合,Vをこれらの束縛のいずれかの値とする。どの束縛を選ぶ
かは処理系定義とする。
e) M内のクラス又はモジュールに,名前がNである束縛をそのクラス変数束縛の集合内にもつものが
存在しなかった場合は,Sを名前がNであるSymbolクラスの直接のインスタンスとし,Sを名前属
性にもつNameErrorクラスの直接のインスタンスを例外として発生させる。
f) 《クラス変数識別子》の値をVとする。
11.5.4.6 インスタンス変数
《インスタンス変数識別子》は,次の手順で評価する。
a) 評価対象の《インスタンス変数識別子》をNとする。
b) 現在のselfのインスタンス変数束縛の集合内に,名前がNである束縛が存在した場合,《インスタン
ス変数識別子》の値はその束縛の値とする。
c) そうではない場合,《インスタンス変数識別子》の値はnilとする。
11.5.4.7 局所変数又はメソッド呼出し
11.5.4.7.1 概要
《変数参照》内に《局所変数識別子》が存在した場合,その《局所変数識別子》は局所変数への参照又は実引
数なしのメソッド呼出しのいずれかとして評価される。
11.5.4.7.2 局所変数識別子の種類の判別
《局所変数識別子》Iの出現が局所変数への参照なのか,メソッド呼出しなのかは,次のとおり判別する。
a) をIが現れたプログラムテキスト上の位置とする。
b) を内包し,かつ,《ブロック》に対応しない局所変数のスコープのうち,最も内側のものをSとする
(9.2参照)。
c) の開始点とPとの間のプログラムテキスト上の区間を,Rとする。
d) と同じ識別子が局所変数への参照としてR内の《変数参照》内に存在する場合,Iは局所変数への参照
とする。
e) と同じ識別子が次の形式としてR内に存在する場合,Iは局所変数への参照とする。
− 《必須仮引数》
− 《省略可能仮引数名》
− 《配列仮引数名》
− 《Proc仮引数名》
− 《左辺》の《変数》
− 《単一変数代入式》の《変数》
− 《単一変数代入文》の《変数》
− 《演算付き変数代入式》の《変数》
− 《演算付き変数代入文》の《変数》
f) そうではない場合,Iはメソッド呼出しとする。
注記 《変数参照》内の《局所変数識別子》以外についても,その《局所変数識別子》の出現が局所変数へ
の参照なのか,メソッド呼出しなのかが,構文規則だけから判別できない場合に,上記の手順

――――― [JIS X 3017 pdf 91] ―――――

86
X 3017 : 2013 (ISO/IEC 30170 : 2012)
で判別を行う(11.3.1参照)。
11.5.4.7.3 局所変数
《局所変数識別子》が局所変数への参照である場合は,次の手順で評価する。
a) を評価対象の《局所変数識別子》とする。
b) 名前がNである局所変数束縛を,9.2で規定されているとおりに探す。
c) 束縛が見つかった場合,《局所変数識別子》の値はその束縛の値とする。
d) そうではない場合,《局所変数識別子》の値はnilとする。
11.5.4.7.4 メソッド呼出し
《局所変数識別子》がメソッド呼出しである場合は,次の手順で評価する。
a) を《局所変数識別子》とする。
b) 空の実引数リストLを作り,現在のselfをメソッド呼出しのレシーバ,Nをメソッド名,Lを実引数
のリストとしてメソッド呼出しを行う(13.3.3参照)。
11.5.4.8 擬似変数
11.5.4.8.1 概要
構文規則
《擬似変数》 ::
《nil式》
|《true式》
|《false式》
|《self式》
注記 《擬似変数》は《局所変数識別子》に似た形式をもつが,変数ではない。
11.5.4.8.2 nil式
構文規則
《nil式》 ::
“nil”
意味規則
《nil式》の評価結果は,NilClassクラスの唯一のインスタンスであるnilとする(6.6参照)。
11.5.4.8.3 true式及びfalse式
構文規則
《true式》 ::
“true”
《false式》 ::
“false”
意味規則
《true式》の評価結果は,TrueClassクラスの唯一のインスタンスであるtrueとする。《false式》の評価
結果は,FalseClassクラスの唯一のインスタンスであるfalseとする(6.6参照)。

――――― [JIS X 3017 pdf 92] ―――――

                                                                                             87
X 3017 : 2013 (ISO/IEC 30170 : 2012)
11.5.4.8.4 self式
構文規則
《self式》 ::
“self”
意味規則
《self式》の評価結果は,現在のselfの値とする。

11.5.5 オブジェクト生成子

11.5.5.1 配列生成子
構文規則
《配列生成子》 ::
“[” 《添字実引数リスト》・ “]”
意味規則
《配列生成子》は,次の手順で評価する。
a) 《添字実引数リスト》がある場合,11.3.2で規定するとおりに,《添字実引数リスト》から実引数のリス
トを作成する。Lをそのリストとする。
b) そうではない場合,空の値のリストLを作成する。
c) rrayクラス(15.2.12参照)の直接のインスタンスを作成し,そのインスタンスにLのそれぞれの
要素を順序を保ったまま保存したものをOとする。
d) 《配列生成子》の値はOとする。
11.5.5.2 ハッシュ生成子
構文規則
《ハッシュ生成子》 ::
“[{” ( 《連想リスト》 [《行終端子》禁止] “,”・ )・ “}]”
《連想リスト》 ::
《連想》 ( [《行終端子》禁止] “,” 《連想》 )*
《連想》 ::
《連想キー》 [《行終端子》禁止] “=>” 《連想値》
《連想キー》 ::
《演算子式》
《連想値》 ::
《演算子式》
意味規則
a) 《ハッシュ生成子》は,次の手順で評価する。
1) 《連想リスト》が存在する場合,その《連想リスト》を評価する。評価結果の値を《ハッシュ生成子》の
値とする。
2) そうではない場合,Hashクラス(15.2.13参照)の空の直接のインスタンスを作成する。このイン
スタンスを《ハッシュ生成子》の値とする。
b) 《連想リスト》は,次の手順で評価する。
1) ashクラスの空の直接のインスタンスHを作成する。

――――― [JIS X 3017 pdf 93] ―――――

88
X 3017 : 2013 (ISO/IEC 30170 : 2012)
2) それぞれの《連想》Aiについて,プログラムテキストに現れる順に,次の手順を行う。
i) Aiの《連想キー》の《演算子式》を評価する。Kiを評価結果の値とする。
ii) 《連想値》の《演算子式》を評価する。Viを評価結果の値とする。
iii) iとViとの組を,Hに対し “[]=” メソッドをKi及びViを実引数として呼び出すことによって,
Hに保存する。
3) 《連想リスト》の値はHとする。
11.5.5.3 範囲式
構文規則
《範囲式》 ::
《演算子OR式》
|《演算子OR式》1 [《行終端子》禁止] 《範囲演算子》 《演算子OR式》2
《範囲演算子》 ::
“..”
|“...”
意味規則
《演算子OR式》1《範囲演算子》 《演算子OR式》2という形式の《範囲式》は,次の手順で評価する。
a) 《演算子OR式》1を評価する。Aを評価結果の値とする。
b) 《演算子OR式》2を評価する。Bを評価結果の値とする。
c) 《範囲演算子》が終端記号 “..” の場合,三つの実引数A,B,及びfalseを含むリストLを作成する。
《範囲演算子》が終端記号 “...” の場合,三つの実引数A,B,及びtrueを含むリストLを作成する。
d) angeクラス(15.2.14参照)に対し,newメソッドを,Lを実引数リストとして呼び出す。呼出し結
果の値を《範囲式》の値とする。

12 文

12.1 概要

構文規則
《文》 ::
《式文》
|《alias文》
|《undef文》
|《if修飾文》
|《unless修飾文》
|《while修飾文》
|《until修飾文》
|《rescue修飾文》
|《代入文》
意味規則
《alias文》については,13.3.6を参照。
《undef文》については,13.3.7を参照。

――――― [JIS X 3017 pdf 94] ―――――

                                                                                             89
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《代入文》については,11.4.2を参照。

12.2 式文

構文規則
《式文》 ::
《式》
意味規則
《式文》は,次の手順で評価する。
a) 《式》を評価する。
b) 評価結果の値を,《式文》の値とする。

12.3 if修飾文

構文規則
《if修飾文》 ::
《文》 [《行終端子》禁止] “if” 《式》
意味規則
S “if” Eという形式の《if修飾文》(ここで,Sは《文》,Eは《式》とする。)は,次の手順で評価する。
a) “if” E “then” S “end” という形式の《if式》を評価する。
b) 評価結果の値を,《if修飾文》の値とする。

12.4 unless修飾文

構文規則
《unless修飾文》 ::
《文》 [《行終端子》禁止] “unless” 《式》
意味規則
S “unless” Eという形式の《unless修飾文》(ここで,Sは《文》,Eは《式》とする。)は,次の手順で評価
する。
a) “unless” E “then” S “end” という形式の《unless式》を評価する。
b) 評価結果の値を,《unless修飾文》の値とする。

12.5 while修飾文

構文規則
《while修飾文》 ::
《文》 [《行終端子》禁止] “while” 《式》
意味規則
S “while” Eという形式の《while修飾文》(ここで,Sは《文》,Eは《式》とする。)は,次の手順で評価す
る。
a) が《begin式》の場合,動作は処理系定義とする。
b) “while” E “do” S “end” という形式の《while式》を評価する。
c) 評価結果の値を,《while修飾文》の値とする。

――――― [JIS X 3017 pdf 95] ―――――

次のページ PDF 96

JIS X 3017:2013の引用国際規格 ISO 一覧

  • ISO/IEC 30170:2012(IDT)

JIS X 3017:2013の国際規格 ICS 分類一覧