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

40
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《シンボル》の評価結果は,Symbolクラスの直接のインスタンスとする。《シンボルリテラル》の評価結
果は,名前が《シンボル名》であるようなSymbolクラスの直接のインスタンスとする。《動的シンボル》の
評価結果は,《一重引用符文字列》(8.7.6.3.2参照),《二重引用符文字列》(8.7.6.3.3参照),又は《非展開リ
テラル文字列》(8.7.6.3.4参照)の値であるStringクラスのインスタンスの内容をその名前にもつような,
Symbolクラスの直接のインスタンスとする。そのStringクラスのインスタンスの内容に文字0x00が含
まれる場合,ArgumentErrorクラスの直接のインスタンスを例外として発生させてもよい。
注記 国際規格では例外を発生させることを“raise”と1単語で表現しているが,この規格では,“例外
として発生させる”と訳す。

9 変数のスコープ

9.1 概要

  局所変数又は大域変数のスコープは静的スコープであり,それはプログラムテキスト上の範囲の集合と
する。
インスタンス変数,定数及びクラス変数は実行環境によって動的に決まるスコープをもつ。それらの束
縛は,実行環境の属性の値に従って探索される(11.5.4.2,11.5.4.5及び11.5.4.6参照)。

9.2 局所変数のスコープ

  局所変数は《局所変数識別子》によって参照される。
局所変数のスコープは,次のプログラム構成要素によって導入される。
− 《プログラム》(10.1参照)。
− 《クラス本体》(13.2.2参照)。
− 《モジュール本体》(13.1.2参照)。
− 《特異クラス本体》(13.4.2参照)。
− 《メソッド定義》(13.3.1参照)及び《特異メソッド定義》(13.4.3参照)。この両者におけるスコープは,
《メソッド仮引数部》で始まり《メソッド本体》まで(《メソッド本体》を含む。)となる。
− 《ブロック》(11.3.3参照)。
Pを上記のプログラム構成要素の一つとする。Pの範囲から,Pの内部に入れ子になっているプログラ
ム構成要素(ただし《ブロック》を除く。)が占める部分を除いた範囲を,Sとする。このSを,そのプログ
ラム構成要素に対応する局所変数のスコープと呼ぶ。
ある局所変数のスコープは,その局所変数の束縛を含んでいる局所変数束縛の集合に対応している局所
変数のスコープである。
局所変数の参照となっている《局所変数識別子》に対して,その局所変数の束縛は,次の手順で解決され
る。
a) を《局所変数識別子》とする。Bを現在の局所変数束縛の集合とする。
b) をBのスコープとする。
c) 名前がNである束縛がBの中に存在する場合,その束縛が解決された束縛となる。
d) 名前がNである束縛がBの中に存在しない場合には,次の手順を行う。
1) がある《ブロック》に対応する局所変数のスコープの場合,次の手順を行う。
i) その《局所変数識別子》が《ブロック仮引数リスト》の《左辺》の場合,次の手順を実行するかどうか
は,処理系定義とする。
ii) を新たに, 局所変数束縛集合 の中で現在のBのすぐ下にある要素とする。そして,名前Nの

――――― [JIS X 3017 pdf 46] ―――――

                                                                                             41
X 3017 : 2013 (ISO/IEC 30170 : 2012)
束縛を探索する処理を,手順b)から継続する。
2) そうではない場合,束縛は解決されないとみなされる。

9.3 大域変数のスコープ

  大域変数のスコープは,プログラムの任意の位置から,その大域変数が参照できるという意味で大域的
である。大域変数束縛は, 大域変数束縛集合 の中に作られる。

10 プログラム構造

10.1 プログラム

構文規則
《プログラム》 ::
《複合文》
規格に厳密に適合するプログラムのプログラムテキストは,非終端記号《プログラム》が表す文字の並び
の集合の要素でなければならない。評価される可能性のないプログラム構成要素を含むプログラムの動作
は,未規定とする。
意味規則
《プログラム》は,次の手順で評価する。
a) 空集合を, 局所変数束縛集合 に積む。
b) 《複合文》を評価する。
c) 《複合文》の評価結果の値を,《プログラム》の値とする。
d) 局所変数束縛集合 の一番上の要素を取り除くことによって実行環境を復元する。

10.2 複合文

構文規則
《複合文》 ::
《文リスト》・ 《分離子リスト》・
《文リスト》 ::
《文》 ( 《分離子リスト》 《文》 )*
《分離子リスト》 ::
《分離子》+
《分離子》 ::
“;”
|[《行終端子》必須]
意味規則
《複合文》は,次の手順で評価する。
a) その《複合文》の《文リスト》がない場合,《複合文》の値はnilとする。
b) その《複合文》の《文リスト》がある場合,《文リスト》のそれぞれの《文》を,プログラムテキストに現れ
る順に評価する。《文リスト》の中で最後に評価した《文》の評価結果の値を,《複合文》の値とする。

――――― [JIS X 3017 pdf 47] ―――――

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

11 式

11.1 概要

構文規則
《式》 ::
《NOT式》
|《キーワードAND式》
|《キーワードOR式》
《NOT式》 ::
《演算子式》
|《括弧なしメソッド呼出し》
|“!” 《括弧なしメソッド呼出し》
|《キーワードNOT式》
《式》は,《文》(箇条12参照)を構成するプログラム要素である。《式》一つだけで《式文》(12.2参照)と
して《文》を構成することもできる。
注記 《式》と《文》との違いは,通常,《式》は値を必要とする場所で使われ,《文》は必ずしも値を必要
としない場所で使われることである。ただし,《ジャンプ式》(11.5.2.4参照)のように値をもた
ない《式》があったり,《複合文》の最後の《文》のように《文》でも値が使われることがあったりす
るなど,幾つかの例外がある。
意味規則
《キーワードAND式》については,11.2.3を参照。《キーワードOR式》については,11.2.4を参照。
《演算子式》という形式の《NOT式》は11.4に規定されるように評価する。《括弧なしメソッド呼出し》とい
う形式の《NOT式》は11.3に規定されるように評価する。その他の《NOT式》については,11.2.2を参照。

11.2 論理式

11.2.1 概要

構文規則
《論理式》 ::=
《論理NOT式》
|《論理AND式》
|《論理OR式》
《論理NOT式》,《論理AND式》及び《論理OR式》のいずれも概念的名前であり,キーワードを使った形
式(例えば,“not x”)と演算子を使った形式(例えば,“!x”)とをまとめて表すために使用する。
《論理NOT式》については,11.2.2を参照。《論理AND式》については,11.2.3を参照。《論理OR式》につ
いては,11.2.4を参照。

――――― [JIS X 3017 pdf 48] ―――――

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

11.2.2 論理NOT式

構文規則
《論理NOT式》 ::=
《キーワードNOT式》
|《演算子NOT式》
《キーワードNOT式》 ::
“not” 《NOT式》
《演算子NOT式》 ::=
“!” ( 《括弧なしメソッド呼出し》|《単項式》 )
注記 “!” 《単項式》という形式の《演算子NOT式》は《単項式》(11.4.3.1参照)である。“!” 《括弧なし
メソッド呼出し》という形式の《演算子NOT式》は《NOT式》(11.1参照)である。
意味規則
a) 《論理NOT式》は,次の手順で評価する。
1) 評価対象の式が,“not” 《NOT式》という形式の場合,《NOT式》を評価する。評価結果の値をXと
する。
2) 評価対象の式が《演算子NOT式》の場合,その《括弧なしメソッド呼出し》又は《単項式》を評価する。
評価結果の値をXとする。
3) が真の場合,《論理NOT式》の値はfalseとする。
4) そうではない場合,《論理NOT式》の値はtrueとする。
b) 手順a) 3)及びa) 4)の代わりに《論理NOT式》を次のとおり評価してもよい。
1) 空の実引数リストLを作成する。Xに対し,“!@” メソッドを,Lを実引数リストとして呼び出す。
呼出し結果の値を《論理NOT式》の値とする。
この場合,処理系は次のことを行わなければならない。
− “!@” 演算子を《演算子メソッド名》に含める。
− Objectクラス,Objectクラスのいずれかのスーパークラス(6.5.4参照),又はObjectクラス
がインクルードしているいずれかのモジュールに,インスタンスメソッド “!@” を定義する。“!@”
メソッドは実引数をとってはならず,レシーバがfalse又はnilの場合にtrueを返し,そうではない
場合にfalseを返さなければならない。

11.2.3 論理AND式

構文規則
《論理AND式》 ::=
《キーワードAND式》
|《演算子AND式》
《キーワードAND式》 ::
《式》 [《行終端子》禁止] “and” 《NOT式》
《演算子AND式》 ::
《等価式》
|《演算子AND式》 [《行終端子》禁止] “&&” 《等価式》

――――― [JIS X 3017 pdf 49] ―――――

44
X 3017 : 2013 (ISO/IEC 30170 : 2012)
意味規則
《論理AND式》は,次の手順で評価する。
a) 《論理AND式》が《等価式》である場合,その《等価式》を11.4.4で規定するとおりに評価する。
b) そうではない場合,次の手順を行う。
1) 《式》又は《演算子AND式》を評価する。評価結果の値をXとする。
2) が真の場合,《NOT式》又は《等価式》を評価する。評価結果の値をYとする。《論理AND式》の値
はYとする。
3) そうではない場合,《論理AND式》の値はXとする。

11.2.4 論理OR式

構文規則
《論理OR式》 ::=
《キーワードOR式》
|《演算子OR式》
《キーワードOR式》 ::
《式》 [《行終端子》禁止] “or” 《NOT式》
《演算子OR式》 ::
《演算子AND式》
|《演算子OR式》 [《行終端子》禁止] “||” 《演算子AND式》
意味規則
《論理OR式》は,次の手順で評価する。
a) 《論理OR式》が《演算子AND式》である場合,その《演算子AND式》を11.2.3で規定するとおりに評価
する。
b) そうではない場合,次の手順を行う。
1) 《式》又は《演算子OR式》を評価する。評価結果の値をXとする。
2) が偽の場合,《NOT式》又は《演算子AND式》を評価する。評価結果の値をYとする。《論理OR式》
の値はYとする。
3) そうではない場合,《論理OR式》の値はXとする。

11.3 メソッド呼出し式

11.3.1 概要

構文規則
《メソッド呼出し式》 ::=
《一次式メソッド呼出し》
|《括弧なしメソッド呼出し》
|《局所変数識別子》
《一次式メソッド呼出し》 ::
《省略可能実引数付きsuper》
|《添字メソッド呼出し》
|《メソッド専用識別子》
|《メソッド識別子》 《ブロック》

――――― [JIS X 3017 pdf 50] ―――――

次のページ PDF 51

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

  • ISO/IEC 30170:2012(IDT)

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