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

30
X 3017 : 2013 (ISO/IEC 30170 : 2012)
8.7.6.3.4 引用符非展開リテラル文字列
構文規則
《引用符非展開リテラル文字列》 ::
“%q” 《非展開区切り文字列》
《非展開区切り文字列》 ::
《リテラル開始区切り子》 《非展開リテラル文字列》* 《リテラル終了区切り子》
《非展開リテラル文字列》 ::
《非展開リテラル文字》
|《非展開区切り文字列》
《非展開リテラル文字》 ::
《非エスケープリテラル文字》
|《非展開リテラルエスケープ列》
《非エスケープリテラル文字》 ::
《ソース文字》 − 《引用符リテラルエスケープ文字》
《非展開リテラルエスケープ列》 ::
《非展開リテラルエスケープ文字並び》
|《非エスケープ非展開リテラル文字並び》
《非展開リテラルエスケープ文字並び》 ::
“\” 《非展開リテラルエスケープ文字》
《非展開リテラルエスケープ文字》 ::
《リテラル開始区切り子》
|《リテラル終了区切り子》
|“\”
《引用符リテラルエスケープ文字》 ::
《非展開リテラルエスケープ文字》
《非エスケープ非展開リテラル文字並び》 ::
“\” 《非エスケープ非展開リテラル文字》
《非エスケープ非展開リテラル文字》 ::
《ソース文字》 − 《非展開リテラルエスケープ文字》
《リテラル開始区切り子》 ::
《ソース文字》 − 《英数字》
《リテラル終了区切り子》 ::
《ソース文字》 − 《英数字》
《非展開区切り文字列》内の全ての《リテラル開始区切り子》は,同じ文字でなければならない。《非展開区
切り文字列》内の全ての《リテラル終了区切り子》は,同じ文字でなければならない。
《リテラル開始区切り子》が表2の左側の列の文字である場合,対応する《リテラル終了区切り子》は,表
2の右側の列の対応する文字でなければならない。そうではない場合,《リテラル終了区切り子》は,対応
する《リテラル開始区切り子》と同じ文字でなければならない。

――――― [JIS X 3017 pdf 36] ―――――

                                                                                             31
X 3017 : 2013 (ISO/IEC 30170 : 2012)
表2−《リテラル開始区切り子》と《リテラル終了区切り子》との対応
《リテラル開始区切り子》 《リテラル終了区切り子》
“[{” “}]”
“(” “)”
“[” “]”
“<” “>”
《引用符非展開リテラル文字列》内の《非展開リテラル文字列》の《非展開区切り文字列》は,その《非展開区
切り文字列》の《リテラル開始区切り子》が表2の左側の列の文字である場合にだけ適用する。
注記1 《引用符非展開リテラル文字列》は,《リテラル開始区切り子》及び対応する《リテラル終了区切
り子》について,入れ子の括弧をもつことができる(例えば “%q[[abc][def]]”)。これら
の二つの括弧と異なる括弧及びエスケープされた括弧は,この入れ子関係では無視される。
例えば,“%q[\[abc\) def(]” は,“[abc\) def(” を内容としてもつStringクラスの直
接のインスタンスを表す。この場合,《リテラル開始区切り子》及び対応する《リテラル開始区
切り子》はそれぞれ “[” 及び “]” であるため,“[”,“]” 及び “\” だけが《非展開リテラル
エスケープ文字》となることができる。
意味規則
《引用符非展開リテラル文字列》の値は,その《引用符非展開リテラル文字列》の《非展開区切り文字列》の
《非展開リテラル文字列》群が表す内容を連結した内容をもつ文字列を表す。
《非展開リテラル文字列》の値は,《非展開リテラルエスケープ文字並び》を除き,プログラムテキスト中
に出現する文字列を,文字どおりに表す。
注記2 《非展開リテラル文字列》によって表される文字列の内容は,その《非展開リテラル文字列》内
の《非展開区切り文字列》の《リテラル開始区切り子》及び《リテラル終了区切り子》を含む。例
えば,“%q((abc))” は “(abc)” という内容をもつStringクラスの直接のインスタンス
を表す。
《非展開リテラルエスケープ文字並び》の値は次のような文字を表す。“\\” は単一の “\” を表す。“\”
《リテラル開始区切り子》は《リテラル開始区切り子》を表す。“\” 《リテラル終了区切り子》は《リテラル終了
区切り子》を表す。

――――― [JIS X 3017 pdf 37] ―――――

32
X 3017 : 2013 (ISO/IEC 30170 : 2012)
8.7.6.3.5 引用符展開リテラル文字列
構文規則
《引用符展開リテラル文字列》 ::
“%” “Q”・ 《展開区切り文字列》
《展開区切り文字列》 ::
《リテラル開始区切り子》 《展開リテラル文字列》* 《リテラル終了区切り子》
《展開リテラル文字列》 ::
《展開リテラル文字》
|《展開区切り文字列》
《展開リテラル文字》 ::
《非エスケープリテラル文字》 − “#”
|“#” [先読み{“$”, “@”, “[{”}]
|《二重エスケープ列》
|《挿入文字並び》
《展開区切り文字列》内の全ての《リテラル開始区切り子》は,同じ文字でなければならない。《展開区切り
文字列》内の全ての《リテラル終了区切り子》は,同じ文字でなければならない。
《リテラル終了区切り子》は,8.7.6.3.4で規定されるとおり,《リテラル開始区切り子》と対応した文字で
なければならない。
《引用符展開リテラル文字列》内の《展開リテラル文字列》の《展開区切り文字列》は,その《展開区切り文字
列》の《リテラル開始区切り子》が8.7.6.3.4の表2の左側の列の文字である場合にだけ適用する。
意味規則
《引用符展開リテラル文字列》の値は,その《引用符展開リテラル文字列》の《展開区切り文字列》の《展開リ
テラル文字列》群が表す内容を連結した内容をもつ文字列を表す。
《展開リテラル文字列》中の文字は,《二重エスケープ列》及び《挿入文字並び》を除き,プログラムテキス
ト中に出現する文字を文字どおりに表現する。《二重エスケープ列》及び《挿入文字並び》は8.7.6.3.3で規定
する文字を表現する。
注記 《展開リテラル文字列》によって表される文字列の内容は,その《展開リテラル文字列》内の《展開
区切り文字列》の《リテラル開始区切り子》及び《リテラル終了区切り子》を含む。例えば,
“%Q((#[{1 + 2}]))” は “(3)” という内容をもつ文字列を表す。
8.7.6.3.6 ヒアドキュメント
構文規則
《ヒアドキュメント》 ::
《ヒアドキュメント開始行》 《ヒアドキュメント本体》 《ヒアドキュメント終端行》
《ヒアドキュメント開始行》 ::
《ヒアドキュメント指示子》 《行残り》
《ヒアドキュメント指示子》 ::
“<<” 《ヒアドキュメント区切り子特定子》
《行残り》 ::
《行内容》・ 《行終端子》

――――― [JIS X 3017 pdf 38] ―――――

                                                                                             33
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《ヒアドキュメント本体》 ::
《ヒアドキュメント本体行》*
《ヒアドキュメント本体行》 ::
( 《行内容》 《行終端子》 ) − 《ヒアドキュメント終端行》
《ヒアドキュメント区切り子特定子》 ::
“-”・ 《ヒアドキュメント区切り子》
《ヒアドキュメント区切り子》 ::
《非引用区切り子》
|《一重引用符区切り子》
|《二重引用符区切り子》
|《コマンド引用区切り子》
《非引用区切り子》 ::
《非引用区切り子識別子》
《非引用区切り子識別子》 ::
《識別子文字》*
《一重引用符区切り子》 ::
“'” 《一重引用符区切り子識別子》 “'”
《一重引用符区切り子識別子》 ::
( 《ソース文字》* ) − ( 《ソース文字》* ( “'”|《行終端子》 ) 《ソース文字》* )
《二重引用符区切り子》 ::
“"” 《二重引用符区切り子識別子》 “"”
《二重引用符区切り子識別子》 ::
( 《ソース文字》* ) − ( 《ソース文字》* ( “"”|《行終端子》 ) 《ソース文字》* )
《コマンド引用区切り子》 ::
“” 《コマンド引用区切り子識別子》 “”
《コマンド引用区切り子識別子》 ::
( 《ソース文字》* ) − ( 《ソース文字》* ( “”|《行終端子》 ) 《ソース文字》* )
《ヒアドキュメント終端行》 ::
《インデント付きヒアドキュメント終端行》
|《インデントなしヒアドキュメント終端行》
《インデント付きヒアドキュメント終端行》 ::
[行頭] 《空白類》* 《ヒアドキュメント区切り子識別子》 《行終端子》
《インデントなしヒアドキュメント終端行》 ::
[行頭] 《ヒアドキュメント区切り子識別子》 《行終端子》
《ヒアドキュメント区切り子識別子》 ::
《非引用区切り子識別子》
|《一重引用符区切り子識別子》
|《二重引用符区切り子識別子》
|《コマンド引用区切り子識別子》

――――― [JIS X 3017 pdf 39] ―――――

34
X 3017 : 2013 (ISO/IEC 30170 : 2012)
《ヒアドキュメント》内の《ヒアドキュメント指示子》,《ヒアドキュメント本体》及び《ヒアドキュメント終
端行》は一つの単位として扱われ,《ヒアドキュメント指示子》が現れた位置に現れる単一の字句であるとみ
なされる。《行残り》の最初の文字が,《ヒアドキュメント》が処理された直後の入力の先頭となる。
《ヒアドキュメント終端行》の形式は,《ヒアドキュメント区切り子特定子》の “-” が出現するかどうかに
よって決まる。
《ヒアドキュメント区切り子特定子》が文字 “-” から始まる場合,《インデント付きヒアドキュメント終
端行》という形式の行が,《ヒアドキュメント終端行》とみなされる。そうではない場合,《インデントなし
ヒアドキュメント終端行》という形式の行が,《ヒアドキュメント終端行》とみなされる。どちらの形式にお
いても,《ヒアドキュメント区切り子識別子》は,《ヒアドキュメント区切り子》の該当する部分と同じ文字
の並びでなければならない。
《ヒアドキュメント区切り子》が《非引用区切り子》という形式の場合,《ヒアドキュメント区切り子識別
子》は,《非引用区切り子識別子》と同じ文字の並びでなければならない。《ヒアドキュメント区切り子》が《一
重引用符区切り子》という形式の場合,《ヒアドキュメント区切り子識別子》は,《一重引用符区切り子識別
子》と同じ文字の並びでなければならない。《ヒアドキュメント区切り子》が《二重引用符区切り子》という形
式の場合,《ヒアドキュメント区切り子識別子》は,《二重引用符区切り子》と同じ文字の並びでなければな
らない。《ヒアドキュメント区切り子》が《コマンド引用区切り子》という形式の場合,《ヒアドキュメント区
切り子識別子》は,《コマンド引用区切り子識別子》と同じ文字の並びでなければならない。
意味規則
《ヒアドキュメント》の評価結果の値は,Stringクラスの直接のインスタンス,又は “” メソッドの呼
出し結果である。
《ヒアドキュメント》の評価結果であるオブジェクトは,次のように作成する。
a) 《ヒアドキュメント本体》からStringクラスの直接のインスタンスSを作る。その内容は,次に示す
とおり《ヒアドキュメント区切り子》の形式に依存する。
− 《ヒアドキュメント区切り子》が《一重引用符区切り子》という形式の場合,Sの内容は,この《ヒアド
キュメント本体》の《ソース文字》の並びとする。
− 《ヒアドキュメント区切り子》が《非引用区切り子》,《二重引用符区切り子》又は《コマンド引用区切り
子》という形式である場合,Sの内容は,《ヒアドキュメント本体》を《二重引用符文字列文字》
(8.7.6.3.3参照)の並びとみなした場合に,その《ヒアドキュメント本体》が表す文字の並びとする。
b) 《ヒアドキュメント区切り子》が《コマンド引用区切り子》という形式でない場合,SをVとする。
c) 《ヒアドキュメント区切り子》が《コマンド引用区切り子》という形式である場合,現在のselfに対し,S
を要素とする一要素のリストを実引数リストとして,“” メソッドを呼び出す。呼出し結果の値をV
とする。
d) 《ヒアドキュメント》の評価結果の値は,Vとする。

――――― [JIS X 3017 pdf 40] ―――――

次のページ PDF 41

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

  • ISO/IEC 30170:2012(IDT)

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