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

                                                                                             45
X 3017 : 2013 (ISO/IEC 30170 : 2012)
|《メソッド識別子》 《括弧付き実引数》 《ブロック》・
|《一次式》 [《行終端子》禁止] “.” 《メソッド名》 《括弧付き実引数》・ 《ブロック》・
|《一次式》 [《行終端子》禁止] “::” 《メソッド名》 《括弧付き実引数》 《ブロック》・
|《一次式》 [《行終端子》禁止] “::” 《定数以外のメソッド名》 《ブロック》・
《メソッド識別子》 ::
《局所変数識別子》
|《定数識別子》
|《メソッド専用識別子》
《メソッド名》 ::
《メソッド識別子》
|《演算子メソッド名》
|《キーワード》
《添字メソッド呼出し》 ::
《一次式》 [《行終端子》禁止] [《空白類》禁止] “[” 《添字実引数リスト》・ “]”
《定数以外のメソッド名》 ::
《メソッド名》 − 《定数識別子》
《括弧なしメソッド呼出し》 ::
《コマンド》
|《doブロック付き連鎖コマンド》
|《doブロック付き連鎖コマンド》 ( “.”|“::” ) 《メソッド名》 《括弧なし実引数》
|《実引数付きreturn》
|《実引数付きbreak》
|《実引数付きnext》
《コマンド》 ::
《実引数付きsuper》
|《実引数付きyield》
|《メソッド識別子》 《括弧なし実引数》
|《一次式》 [《行終端子》禁止] ( “.”|“::” ) 《メソッド名》 《括弧なし実引数》
《doブロック付き連鎖コマンド》 ::
《doブロック付きコマンド》 《連鎖メソッド呼出し》*
《連鎖メソッド呼出し》 ::
( “.”|“::” ) 《メソッド名》
|( “.”|“::” ) 《メソッド名》 《括弧付き実引数》
《doブロック付きコマンド》 ::
《実引数・doブロック付きsuper》
|《メソッド識別子》 《括弧なし実引数》 《doブロック》
|《一次式》 [《行終端子》禁止] ( “.”|“::” ) 《メソッド名》
《括弧なし実引数》 《doブロック》
《局所変数識別子》という形式の《メソッド呼出し式》については,11.5.4.7を参照。

――――― [JIS X 3017 pdf 51] ―――――

46
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《一次式メソッド呼出し》の《括弧付き実引数》(11.3.2参照)が存在し,かつ,その《括弧付き実引数》内
の《実引数リスト》の《ブロック実引数》が存在する場合,《一次式メソッド呼出し》の《ブロック》は存在して
はならない。
《doブロック付きコマンド》の《括弧なし実引数》が存在し,かつ,その《実引数リスト》の《ブロック実引
数》が存在する場合(11.3.2参照),《doブロック付きコマンド》の《doブロック》は存在してはならない。
《コマンド》又は《doブロック付きコマンド》の《括弧なし実引数》が存在し,かつ,その《括弧なし実引数》
が “&”,“<<”,“+”,“-”,“*”,“/” 及び “%” のいずれかで始まり,かつ,その《コマンド》又は《doブロ
ック付きコマンド》の《メソッド識別子》が《局所変数識別子》である場合,その《局所変数識別子》は,
11.5.4.7.2の手順によって局所変数への参照であるとみなされるものであってはならない。
意味規則
《メソッド呼出し式》は,次の手順で評価する。
a) 《一次式メソッド呼出し》は,次の手順で評価する。
1) 《一次式メソッド呼出し》が《省略可能実引数付きsuper》の場合,それを11.3.4で規定するとおりに評
価する。評価結果の値を《一次式メソッド呼出し》の値とする。
2) 《一次式メソッド呼出し》が《添字メソッド呼出し》の場合,それを手順b)で規定するとおりに評価す
る。評価結果の値を《一次式メソッド呼出し》の値とする。
3) ) 《一次式メソッド呼出し》が《メソッド専用識別子》の場合,Oを現在のself,Mをその《メソッド専
用識別子》とする。空の実引数リストLを作成する。
ii) 《一次式メソッド呼出し》の《メソッド識別子》が存在する場合,次の手順を行う。
I) 現在のselfをO,その《メソッド識別子》をMとする。
II) 《括弧付き実引数》が存在する場合,11.3.2で規定するとおりに,《括弧付き実引数》から実引数
リスト及び《ブロック》を作成する。結果のリストをLとする。結果の《ブロック》(もしあれば)
をBとする。
《括弧付き実引数》が存在しない場合,空の実引数リストLを作成する。
III) 《ブロック》が存在する場合,それをBとする。
iii) 《一次式メソッド呼出し》の “.” が存在する場合,次の手順を行う。
I) 《一次式》を評価し,評価結果の値をOとする。《メソッド名》をMとする。
II) 《括弧付き実引数》が存在する場合,11.3.2で規定するとおりに,《括弧付き実引数》から実引数
リスト及び《ブロック》を作成する。結果のリストをLとする。結果の《ブロック》(もしあれば)
をBとする。
《括弧付き実引数》が存在しない場合,空の実引数リストLを作成する。
III) 《ブロック》が存在する場合,それをBとする。
iv) 《一次式メソッド呼出し》の “::” 及び《メソッド名》が存在する場合,次の手順を行う。
I) 《一次式》を評価し,評価結果の値をOとする。《メソッド名》をMとする。
II) 11.3.2で規定するとおりに,《括弧付き実引数》から実引数リスト及び《ブロック》を構成する。
結果のリストをLとする。結果の《ブロック》(もしあれば)をBとする。
III) 《ブロック》が存在する場合,それをBとする。
v) 《一次式メソッド呼出し》の “::” 及び《定数以外のメソッド名》が存在する場合,次の手順を行う。
I) 《一次式》を評価し,評価結果の値をOとする。《定数以外のメソッド名》をMとする。
II) 空の実引数リストLを作成する。

――――― [JIS X 3017 pdf 52] ―――――

                                                                                             47
X 3017 : 2013 (ISO/IEC 30170 : 2012)
III) 《ブロック》が存在する場合,それをBとする。
4) メソッドMを,Oに対し,Lを実引数リスト,Bを《ブロック》(もしあれば)として呼び出す(13.3.3
参照)。呼出し結果の値を《一次式メソッド呼出し》の値とする。
b) 《添字メソッド呼出し》は,次の手順で評価する。
1) 《一次式》を評価する。評価結果の値をOとする。
2) 《添字実引数リスト》が存在する場合,11.3.2で規定するとおりに,《添字実引数リスト》から実引数
リストを作成する。このリストをLとする。
3) 《添字実引数リスト》が存在しない場合,空の実引数リストLを作成する。
4) “[]” メソッドを,Oに対し,Lを実引数リストとして呼び出す。呼出し結果の値を《添字メソッド
呼出し》の値とする。
c) 《括弧なしメソッド呼出し》は,次の手順で評価する。
1) 《括弧なしメソッド呼出し》が《コマンド》の場合,それを手順d)で規定するとおりに評価する。評価
結果の値を《括弧なしメソッド呼出し》の値とする。
2) 《括弧なしメソッド呼出し》が《実引数付きreturn》,《実引数付きbreak》又は《実引数付きnext》(11.5.2.4
参照)の場合,それを評価する。この評価によって,11.5.2.4で規定するように他のプログラム要素
に制御が移る。
3) 《括弧なしメソッド呼出し》の《doブロック付き連鎖コマンド》が存在する場合,次の手順を行う。
i) 《doブロック付き連鎖コマンド》を手順e)で規定するとおりに評価する。評価結果の値をVとする。
ii) 《括弧なしメソッド呼出し》の《メソッド名》及び《括弧なし実引数》が存在する場合,次の手順を行
う。
I) 《メソッド名》をMとする。
II) 11.3.2で規定するとおりに,《括弧なし実引数》から実引数リストを作成し,そのリストをLと
する。《括弧なし実引数》の《実引数リスト》の《ブロック実引数》が存在する場合,その《ブロック
実引数》に対応する《ブロック》[11.3.2 e) 6) 参照]をBとする。
III) メソッドMを,Vに対し,Lを実引数リスト,Bを《ブロック》(もしあれば)として呼び出す。
IV) の値を,呼出し結果の値に置き換える。
iii) 《括弧なしメソッド呼出し》の値はVとする。
d) 《コマンド》は,次の手順で評価する。
1) 《コマンド》が《実引数付きsuper》又は《実引数付きyield》の場合,それを11.3.4又は11.3.5で規定す
るとおりに評価する。評価結果の値を《コマンド》の値とする。
2) そうではない場合,次の手順を行う。
i) 《コマンド》の《メソッド識別子》が存在する場合,次の手順を行う。
I) 現在のselfをO,その《メソッド識別子》をMとする。
II) 11.3.2で規定するとおりに,《括弧なし実引数》から実引数リストを作成し,そのリストをLと
する。
《括弧なし実引数》の《実引数リスト》の《ブロック実引数》が存在する場合,その《ブロック実引
数》に対応する《ブロック》をBとする。
ii) 《コマンド》の《一次式》(11.5参照),《メソッド名》及び《括弧なし実引数》が存在する場合,次の手
順を行う。
I) 《一次式》を評価する。評価結果の値をOとする。《メソッド名》をMとする。

――――― [JIS X 3017 pdf 53] ―――――

48
X 3017 : 2013 (ISO/IEC 30170 : 2012)
II) 11.3.2で規定するとおりに,《括弧なし実引数》から実引数リストを作成し,そのリストをLと
する。
《括弧なし実引数》の《実引数リスト》の《ブロック実引数》が存在する場合,その《ブロック実引
数》に対応する《ブロック》をBとする。
iii) メソッドMを,Oに対し,Lを実引数リスト,Bを《ブロック》(もしあれば)として呼び出す。
呼出し結果の値を《コマンド》の値とする。
e) 《doブロック付き連鎖コマンド》は,次の手順で評価する。
1) 《doブロック付きコマンド》を手順f)で規定するとおりに評価し,評価結果の値をVとする。
2) プログラムテキストに現れる順に,それぞれの《連鎖メソッド呼出し》について次の手順を行う。
i) 《連鎖メソッド呼出し》の《メソッド名》をMとする。
ii) 《括弧付き実引数》が存在する場合,11.3.2で規定するとおりに,《括弧付き実引数》から実引数リ
スト及び《ブロック》を作成する。結果のリストをLとする。結果の《ブロック》(もしあれば)を
Bとする。
《括弧付き実引数》が存在しない場合,空の実引数リストLを作成する。
iii) メソッドMを,Vに対し,Lを実引数リスト,Bを《ブロック》(もしあれば)として呼び出す。
iv) の値を,呼出し結果の値で置き換える。
3) 《doブロック付き連鎖コマンド》の値は,Vとする。
f) 《doブロック付きコマンド》は,次の手順で評価する。
1) 《doブロック付きコマンド》が《実引数・doブロック付きsuper》の場合,それを11.3.4で規定すると
おりに評価する。評価結果の値を《doブロック付きコマンド》の値とする。
2) そうではない場合,次の手順を行う。
i) 《doブロック付きコマンド》の《メソッド識別子》が存在する場合,現在のselfをO,《メソッド
識別子》をMとする。
ii) 《doブロック付きコマンド》の《一次式》が存在する場合,《一次式》を評価し,評価結果の値をO,
《メソッド名》をMとする。
iii) 《doブロック付きコマンド》の《括弧なし実引数》から実引数リストを作成し,そのリストをLと
する。
iv) メソッドMを,Oに対し,Lを実引数リスト,《doブロック》を《ブロック》として呼び出す。呼
出し結果の値を《doブロック付きコマンド》の値とする。

――――― [JIS X 3017 pdf 54] ―――――

                                                                                             49
X 3017 : 2013 (ISO/IEC 30170 : 2012)

11.3.2 メソッド実引数

構文規則
《メソッド実引数》 ::=
《添字実引数リスト》
|《括弧付き実引数》
|《括弧なし実引数》
《添字実引数リスト》 ::
《コマンド》
|《演算子式リスト》 ( [《行終端子》禁止] “,” )・
|《演算子式リスト》 [《行終端子》禁止] “,” 《散開実引数》
|《連想リスト》 ( [《行終端子》禁止] “,” )・
|《散開実引数》
《散開実引数》 ::
“*” 《演算子式》
《演算子式リスト》 ::
《演算子式》 ( [《行終端子》禁止] “,” 《演算子式》 )*
《括弧付き実引数》 ::
[《行終端子》禁止] [《空白類》禁止] 《括弧及び実引数》
《括弧及び実引数》 ::
“(” “)”
|“(” 《実引数リスト》 “)”
|“(” 《演算子式リスト》 [《行終端子》禁止] “,” 《doブロック付き連鎖コマンド》 “)”
|“(” 《doブロック付き連鎖コマンド》 “)”
《括弧なし実引数》 ::
[先読み{“[{”}] [《行終端子》禁止] 《実引数リスト》
《実引数リスト》 ::
《ブロック実引数》
|《散開実引数》 ( “,” 《ブロック実引数》 )・
|《演算子式リスト》 [《行終端子》禁止] “,” 《連想リスト》
( [《行終端子》禁止] “,” 《散開実引数》 )・ ( [《行終端子》禁止] “,” 《ブロック実引数》 )・
|( 《演算子式リスト》|《連想リスト》 )
( [《行終端子》禁止] “,” 《散開実引数》 )・ ( [《行終端子》禁止] “,” 《ブロック実引数》 )・
|《コマンド》
《ブロック実引数》 ::
“&” 《演算子式》
《括弧なし実引数》が,“&”,“<<”,“+”,“-”,“*”,“/” 及び “%” のいずれかの文字の並びで始まる場
合,次の条件を満たさなければならない。
− その《括弧なし実引数》の直前に一つ以上の《空白類》が存在しなければならない。
− その文字の並びの直後に《空白類》が存在してはならない。

――――― [JIS X 3017 pdf 55] ―――――

次のページ PDF 56

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

  • ISO/IEC 30170:2012(IDT)

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