35
X 3017 : 2013 (ISO/IEC 30170 : 2012)
8.7.6.3.7 外部コマンド実行
構文規則
《外部コマンド実行》 ::
《逆引用符外部コマンド実行》
|《引用符外部コマンド実行》
《逆引用符外部コマンド実行》 ::
“” 《逆引用符外部コマンド実行文字》* “”
《逆引用符外部コマンド実行文字》 ::
《ソース文字》 − ( “”|“#”|““” )
|“#” [先読み{“$”, “@”, “[{”}]
|《二重エスケープ列》
|《挿入文字並び》
《引用符外部コマンド実行》 ::
“%x” 《展開区切り文字列》
意味規則
《外部コマンド実行》は,“” メソッドを呼び出すための形式である。
《外部コマンド実行》は,次の手順で評価する。
a) 《外部コマンド実行》が《逆引用符外部コマンド実行》の場合,《逆引用符外部コマンド実行文字》が表現
する文字の並びを内容とするStringクラスの直接のインスタンスSを作成する。《逆引用符外部コ
マンド実行文字》は,《二重エスケープ列》及び《挿入文字並び》を除き,プログラムテキスト中に出現す
る文字を文字どおりに表現する。《二重エスケープ列》及び《挿入文字並び》は,8.7.6.3.3で規定する文
字を表現する。
b) 《外部コマンド実行》が《引用符外部コマンド実行》の場合,“%x” を “%Q” で置き換えてできる《引用符
展開リテラル文字列》を,8.7.6.3.5で規定するとおりに評価することで,Stringクラスの直接のイン
スタンスSを作成する。
c) 現在のselfに対し,“” メソッドを,Sを要素とする一要素のリストを実引数リストとして呼び出す。
d) 呼出し結果の値を《外部コマンド実行》の値とする。
8.7.6.4 配列リテラル
構文規則
《配列リテラル》 ::
《引用符非展開配列生成子》
|《引用符展開配列生成子》
《引用符非展開配列生成子》 ::
“%w” 《リテラル開始区切り子》 《非展開配列内容》 《リテラル終了区切り子》
《非展開配列内容》 ::
《引用符配列要素分離子リスト》・ 《非展開配列要素リスト》・ 《引用符配列要素分離子リスト》・
《非展開配列要素リスト》 ::
《非展開配列要素》 ( 《引用符配列要素分離子リスト》 《非展開配列要素》 )*
《引用符配列要素分離子リスト》 ::
――――― [JIS X 3017 pdf 41] ―――――
36
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《引用符配列要素分離子》+
《引用符配列要素分離子》 ::
《空白類》
|《行終端子》
《非展開配列要素》 ::
《非展開配列要素文字》+
《非展開配列要素文字》 ::
《非エスケープ配列文字》
|《非展開配列エスケープ列》
《非エスケープ配列文字》 ::
《非エスケープリテラル文字》 − 《引用符配列要素分離子》
《非展開配列エスケープ列》 ::
《非展開リテラルエスケープ列》
|“\” 《引用符配列要素分離子》
《引用符展開配列生成子》 ::
“%W” 《リテラル開始区切り子》 《展開配列内容》 《リテラル終了区切り子》
《展開配列内容》 ::
《引用符配列要素分離子リスト》・ 《展開配列要素リスト》・ 《引用符配列要素分離子リスト》・
《展開配列要素リスト》 ::
《展開配列要素》 ( 《引用符配列要素分離子リスト》 《展開配列要素》 )*
《展開配列要素》 ::
《展開配列要素文字》+
《展開配列要素文字》 ::
《非エスケープ配列要素文字》
|“#” [先読み{“$”, “@”, “[{”}]
|《展開配列エスケープ列》
|《挿入文字並び》
《非エスケープ配列要素文字》 ::
《ソース文字》 − ( 《引用符配列要素分離子》|“\”|“#” )
《展開配列エスケープ列》 ::
《二重エスケープ列》
|“\” 《引用符配列要素分離子》
《リテラル終了区切り子》は,8.7.6.3.4で規定されるとおり,《リテラル開始区切り子》に対応した文字で
なければならない。
《リテラル開始区切り子》が8.7.6.3.4の表2の左側の列のいずれの文字でもない場合,《非エスケープ配列
要素文字》はその《リテラル開始区切り子》であってはならない。
《リテラル開始区切り子》が8.7.6.3.4の表2の左側の列の文字であった場合,《引用符非展開配列生成子》
又は《引用符展開配列生成子》は,次の条件を満たさなければならない。ここで,Cはその《引用符非展開配
列生成子》又は《引用符展開配列生成子》を,Bは《リテラル開始区切り子》を,Eは8.7.6.3.4の表2でBに対
――――― [JIS X 3017 pdf 42] ―――――
37
X 3017 : 2013 (ISO/IEC 30170 : 2012)
応する《リテラル終了区切り子》を,“y内のxの数”はy内に現れるxの数(ただし,《非展開配列エスケ
ープ列》又は《展開配列エスケープ列》内に現れる場合を除く。)を表す。
− C内のBの数とC内のEの数とが等しい。
− 最初のBから始まり,最後のEより前の位置で終わるCの任意の部分文字列Sについて,S内のBの
数がS内のEの数より大きい。
注記 上記の条件は《配列リテラル》内の入れ子の括弧のためにある。括弧の対応は,《配列リテラル》
の値の構造とは関係がない。例えば,“%w[[ab cd][ef]]” は “["[ab", "cd][ef]"]” を
表す。
意味規則
《配列リテラル》の評価結果はArrayクラスの直接のインスタンスとし,次の手順で評価を行う。
a) 《引用符非展開配列生成子》は次の手順で評価する。
1) rrayクラスの空の直接のインスタンスを作成する。Aをこのインスタンスとする。
2) 《非展開配列要素リスト》が存在する場合,《非展開配列要素リスト》のそれぞれの《非展開配列要素》
について,次の手順を行う。
i) 《非展開配列要素文字》の並びで表現される中身をもったStringクラスの直接のインスタンスS
を作成する。
《非展開配列エスケープ列》を除く《非展開配列要素文字》は,プログラムテキストに現れるままの
文字を表現する。《非展開配列エスケープ列》は,8.7.6.3.4で示されているとおりに《非展開リテラ
ルエスケープ列》で表現される文字を表現する。ただし,“\” 《引用符配列要素分離子》という形式
の《非展開配列エスケープ列》は,その《引用符配列要素分離子》をプログラムテキスト中に出現す
る文字どおりに表現する。
ii) をAの末尾に追加する。
3) 《引用符非展開配列生成子》の値はAとする。
b) 《引用符展開配列生成子》は,次の手順で評価する。
1) rrayクラスの空の直接のインスタンスを作成する。Aをこのインスタンスとする。
2) 《展開配列要素リスト》が存在する場合,《展開配列要素リスト》のそれぞれの《展開配列要素》を次の
とおり処理する。
i) 《展開配列要素文字》の並びで表現される中身をもったStringクラスの直接のインスタンスSを
作成する。
《展開配列要素文字》は,《展開配列エスケープ列》及び《挿入文字並び》を除き,プログラムテキス
トに現れるままの文字を表現する。《展開配列エスケープ列》は,8.7.6.3.3で示されているとおり
に《二重エスケープ列》の表現する文字を表す。ただし,“\” 《引用符配列要素分離子》という形式
の《展開配列エスケープ列》は,その《引用符配列要素分離子》をプログラムテキスト中に出現する
文字どおりに表現する。《挿入文字並び》は,8.7.6.3.3で示されているような文字の並びを表現す
る。
ii) をAの末尾に追加する。
3) 《引用符展開配列生成子》の値はAとする。
――――― [JIS X 3017 pdf 43] ―――――
38
X 3017 : 2013 (ISO/IEC 30170 : 2012)
8.7.6.5 正規表現リテラル
構文規則
《正規表現リテラル》 ::
“/” 《正規表現本体》 “/” 《正規表現オプション》*
|“%r” 《リテラル開始区切り子》 《展開リテラル文字列》*
《リテラル終了区切り子》 《正規表現オプション》*
《正規表現本体》 ::
《正規表現文字》*
《正規表現文字》 ::
《ソース文字》 − ( “/”|“#”|“\” )
|“#” [先読み{“$”, “@”, “[{”}]
|《正規表現非エスケープ列》
|《正規表現区切り文字エスケープ列》
|《行終端子エスケープ列》
|《挿入文字並び》
《正規表現非エスケープ列》 ::
“\” 《正規表現非エスケープ文字》
《正規表現非エスケープ文字》 ::
《ソース文字》 − (0x0d|0x0a)
|0x0d [先読み{0x0a}]
《正規表現区切り文字エスケープ列》 ::
“\” “/”
《正規表現オプション》 ::
“i”|“m”
《正規表現リテラル》の《展開リテラル文字列》中に出現する《リテラル開始区切り子》は,その《正規表現リ
テラル》の《リテラル開始区切り子》と同じ文字でなければならない。
《リテラル終了区切り子》は,8.7.6.3.4で規定されるとおり,《リテラル開始区切り子》と対応していなけ
ればならない。
意味規則
《正規表現リテラル》の評価結果は,Regexpクラスの直接のインスタンスとする。
《正規表現リテラル》の評価結果であるRegexpクラスのインスタンスのパターン属性(15.2.15.1参照)
は,《正規表現文字》の並び又は《展開リテラル文字列》の並びが表す文字列とする。その文字列は,《パター
ン》(15.2.15.4参照)という形式でなければならない。
《正規表現文字》(ただし,《正規表現区切り文字エスケープ列》,《行終端子エスケープ列》又は《挿入文字
並び》を除く。)は,プログラムテキスト中に出現するそれ自身の文字列を表す。《展開リテラル文字列》(た
だし,《行終端子エスケープ列》又は《挿入文字並び》を除く。)は,プログラムテキスト中に出現するそれ自
身の文字列を表す。
《正規表現区切り文字エスケープ列》は,文字 “/” を表す。
《正規表現文字》内及び《展開リテラル文字列》内の《行終端子エスケープ列》は,評価結果のRegexpクラ
――――― [JIS X 3017 pdf 44] ―――――
39
X 3017 : 2013 (ISO/IEC 30170 : 2012)
スのインスタンスのパターン属性内では無視する。
《正規表現リテラル》内及び《展開リテラル文字列》内の《挿入文字並び》の評価結果の値は,その《挿入文字
並び》を8.7.6.3.3で規定するとおりに評価した結果であるStringクラスのインスタンスの内容とする。
《正規表現オプション》は,《正規表現リテラル》の評価結果であるRegexpクラスのインスタンスの大小
文字同一視フラグ属性及び複数行フラグ属性を指定する。《正規表現オプション》の “i” が存在する場合は,
評価結果のRegexpクラスのインスタンスの大小文字同一視フラグ属性を真とする。《正規表現オプショ
ン》の “m” が存在する場合は,評価結果のRegexpクラスのインスタンスの複数行フラグ属性を真とする。
《正規表現リテラル》から作られるRegexpクラスのインスタンスのパターン属性の構文規則は,
15.2.15.4で規定する。
8.7.6.6 シンボルリテラル
構文規則
《シンボル》 ::
《シンボルリテラル》
|《動的シンボル》
《シンボルリテラル》 ::
“:” 《シンボル名》
《動的シンボル》 ::
“:” 《一重引用符文字列》
|“:” 《二重引用符文字列》
|“%s” 《リテラル開始区切り子》 《非展開リテラル文字列》* 《リテラル終了区切り子》
《シンボル名》 ::
《インスタンス変数識別子》
|《大域変数識別子》
|《クラス変数識別子》
|《定数識別子》
|《局所変数識別子》
|《メソッド専用識別子》
|《代入風メソッド識別子》
|《演算子メソッド名》
|《キーワード》
《動的シンボル》の,《一重引用符文字列》,《二重引用符文字列》又は《非展開リテラル文字列》は,その《一
重引用符文字列》,《二重引用符文字列》又は《非展開リテラル文字列》を,8.7.6.3.2,8.7.6.3.3又は8.7.6.3.4
に規定されているとおりに評価した場合に,評価結果の文字列中で文字0x00となるような,いかなるプロ
グラムテキスト上の文字の並びも含んではならない。
《非展開リテラル文字列》中に出現する《リテラル開始区切り子》は,《動的シンボル》の《リテラル開始区切
り子》と同じ文字でなければならない。
《リテラル終了区切り子》は,8.7.6.3.4で規定されるとおり,《リテラル開始区切り子》と対応していなけ
ればならない。
意味規則
――――― [JIS X 3017 pdf 45] ―――――
次のページ PDF 46
JIS X 3017:2013の引用国際規格 ISO 一覧
- ISO/IEC 30170:2012(IDT)
JIS X 3017:2013の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語