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

                                                                                             25
X 3017 : 2013 (ISO/IEC 30170 : 2012)
ある。
x -123
上記のプログラムでは,x メソッドが “-123” の値を実引数として呼び出される。
ただし,次のプログラムでは,“x” と “-123” との間に《空白類》が存在しないため,“-123” は
“-” と “123” という二つの字句に分割される。
x-123
上記のプログラムでは,“-” メソッドが “x” の値に対して “123” の値を実引数として呼び出さ
れる。
意味規則
《数値リテラル》の評価結果は,Integerクラスのインスタンス又はFloatクラスの直接のインスタン
スとする。
注記 15.2.8.1で規定するとおりにIntegerクラスのサブクラス群を定義してもよい。
《整数リテラル》という形式の《符号なし数》の評価結果は,《整数リテラル》の生成規則のいずれかの項列
の値を表すIntegerクラスのインスタンスとする。
《浮動小数点数リテラル》という形式の《符号なし数》の評価結果は,《浮動小数点数リテラル》の生成規則
のいずれかの項列の値を表すFloatクラスの直接のインスタンスとする。
“+” で始まる《符号付き数》の評価結果は,《符号なし数》の評価結果のインスタンスとする。“-” で始ま
る《符号付き数》の評価結果は,《符号なし数》の評価結果のインスタンスの値の符号を反転した値を表す
Integerクラスのインスタンス又はFloatクラスの直接のインスタンスとする。
《整数リテラル》,《10進整数リテラル》,《浮動小数点数リテラル》又は《有効数字部》の値は,それらの生
成規則のいずれかの項列の値とする。
《前置子なし10進整数リテラル》の値は,“0” の場合は0であり,そうではない場合は,一つの《0以外
の10進数字》の後に幾つかの《10進数字》が続いた文字列を,途中の “” を無視して10進数として解釈し
た値とする。
《前置子付き10進整数リテラル》の値は,《10進整数部》の値とする。
《10進整数部》の値は,《10進数字》の並びを,途中の “” を無視して10進数として解釈した値とする。
《2進整数リテラル》の値は,《2進数字》の並びを,“” を除いて2進数として解釈した値とする。
《8進整数リテラル》の値は,《8進数字》の並びを,“” を除いて8進数として解釈した値とする。
《16進整数リテラル》の値は,“” を除いた《16進数字》の並びを,16進数として解釈した値とする。“a”
(又は “A”)から “f”(又は “F”)までの《16進数字》の値は,それぞれ10から15までとする。
《指数なし浮動小数点数リテラル》の値は,《10進整数部》の《10進数字》の個数をnとして,《前置子なし
10進整数リテラル》の値と,《10進整数部》の値×10−nとを加算した値とする。
《指数付き浮動小数点数リテラル》の値は,nを《指数部》の値とするとき,《有効数字部》×10nの値とする。
《指数部》の値は,“-” が出現する場合,《10進整数部》の負数とし,そうではない場合,《10進整数部》
の値とする。
Integerクラスのインスタンスの値の範囲については,15.2.8.1を参照。
Floatクラスのインスタンスの値の精度については,15.2.9.1を参照。

――――― [JIS X 3017 pdf 31] ―――――

26
X 3017 : 2013 (ISO/IEC 30170 : 2012)
8.7.6.3 文字列リテラル
8.7.6.3.1 概要
構文規則
《文字列リテラル》 ::
《一重引用符文字列》
|《二重引用符文字列》
|《引用符非展開リテラル文字列》
|《引用符展開リテラル文字列》
|《ヒアドキュメント》
|《外部コマンド実行》
意味規則
《文字列リテラル》の評価結果は,Stringクラスの直接のインスタンスとする。
注記 《文字列リテラル》の中には,プログラムテキスト上の文字の列だけでなく,任意の式の評価結
果を内容にできるものがある(8.7.6.3.3参照)。
8.7.6.3.2 一重引用符文字列
構文規則
《一重引用符文字列》 ::
“'” 《一重引用符文字列文字》* “'”
《一重引用符文字列文字》 ::
《一重引用符文字列非エスケープ文字》
|《一重引用符エスケープ列》
《一重引用符エスケープ列》 ::
《単一エスケープ文字並び》
|《一重引用符文字列非エスケープ文字並び》
《単一エスケープ文字並び》 ::
“\” 《一重引用符文字列メタ文字》
《一重引用符文字列非エスケープ文字並び》 ::
“\” 《一重引用符文字列非エスケープ文字》
《一重引用符文字列メタ文字》 ::
“'”|“\”
《一重引用符文字列非エスケープ文字》 ::
《ソース文字》 − 《一重引用符文字列メタ文字》
意味規則
《一重引用符文字列》は,一重引用符でくくられた0個以上の文字からなる。一重引用符の対で囲まれた
《一重引用符文字列文字》の並びは,《単一エスケープ文字並び》を除き,プログラムテキスト中に出現する
文字列を,文字どおりに表す。“\\” は,文字 “\” を表す。“\'” は,文字 “'” を表す。
注記 《単一エスケープ文字並び》と異なり,《一重引用符文字列非エスケープ文字並び》は,プログラ
ムテキスト中に出現する二つの文字を,文字どおりに表す。例えば,“\a” は,二つの文字 “\”
及び “a” を表す。

――――― [JIS X 3017 pdf 32] ―――――

                                                                                             27
X 3017 : 2013 (ISO/IEC 30170 : 2012)
例 '\a\'\\' は,“\a'\” を内容としてもつ文字列を表す。
8.7.6.3.3 二重引用符文字列
構文規則
《二重引用符文字列》 ::
“"” 《二重引用符文字列文字》* “"”
《二重引用符文字列文字》 ::
《ソース文字》 − ( “"”|“#”|“\” )
|“#” [先読み{“$”, “@”, “[{”}]
|《二重エスケープ列》
|《挿入文字並び》
《二重エスケープ列》 ::
《単純エスケープ列》
|《非エスケープ列》
|《行終端子エスケープ列》
|《8進エスケープ列》
|《16進エスケープ列》
|《制御エスケープ列》
《単純エスケープ列》 ::
“\” 《二重エスケープ文字》
《二重エスケープ文字》 ::
“n”|“t”|“r”|“f”|“v”|“a”|“e”|“b”|“s”
《非エスケープ列》 ::
“\” 《非エスケープ二重引用符文字列文字》
《非エスケープ二重引用符文字列文字》 ::
《ソース文字》 − ( 《英数字》|《行終端子》 )
《8進エスケープ列》 ::
“\” 《8進数字》 《8進数字》・ 《8進数字》・
《16進エスケープ列》 ::
“\” “x” 《16進数字》 《16進数字》・
《制御エスケープ列》 ::
“\” ( “C-”|“c” ) 《制御エスケープ文字》
《制御エスケープ文字》 ::
《二重エスケープ列》
|“・”
|《ソース文字》 − ( “\”|“・” )
《挿入文字並び》 ::
“#” 《大域変数識別子》
|“#” 《クラス変数識別子》
|“#” 《インスタンス変数識別子》

――――― [JIS X 3017 pdf 33] ―――――

28
X 3017 : 2013 (ISO/IEC 30170 : 2012)
|“#” “[{” 《複合文》 “}]”
《英数字》 ::
《大文字》
|《小文字》
|《10進数字》
意味規則
《二重引用符文字列》は,二重引用符によってくくられた0個以上の文字からなる。二重引用符の対の中
の《二重引用符文字列文字》の並びは,文字列の内容を表す。
《二重エスケープ列》と《挿入文字並び》とを除き,《二重引用符文字列文字》は,プログラムテキスト中に
出現する文字を,文字どおりに表す。
《単純エスケープ列》は,表1に示す文字を表す。
表1−単純エスケープ列
エスケープ列 文字符号
“\n” 0x0a
“\t” 0x09
“\r” 0x0d
“\f” 0x0c
“\v” 0x0b
“\a” 0x07
“\e” 0x1b
“\b” 0x08
“\s” 0x20
《8進エスケープ列》は,その《8進数字》の並びを8進数として解釈したときの値を文字符号としてもつ文
字を表す。
《16進エスケープ列》は,その《16進数字》の並びを16進数として解釈したときの値を文字符号としても
つ文字を表す。
《非エスケープ列》は,その《非エスケープ二重引用符文字列文字》を表す。
《行終端子エスケープ列》を使うことによって,文字列の中に《行終端子》を挿入せずに,プログラムテキ
スト上で文字列を複数の行に分割することができる。《行終端子エスケープ列》は,文字列の文字とはみな
されない。
《制御エスケープ列》は,0x9fと《制御エスケープ文字》が表す文字の文字コードとのビットごとの論理積
の結果を文字コードとしてもつ文字を表す。ただし,《制御エスケープ文字》が “・” である場合は,文字コ
ードが0x7fである文字を表す。
《挿入文字並び》は,《文字列リテラル》の一部であり,その《文字列リテラル》の評価時に動的に評価され
る。《挿入文字並び》を含む《文字列リテラル》の値はStringクラスの直接のインスタンスであり,その内
容は《文字列リテラル》内の《挿入文字並び》を,それを動的に評価した結果である文字列の内容で置き換え
た《文字列リテラル》である。
《挿入文字並び》は,次の手順で評価する。
a) “#” 《大域変数識別子》という形式の場合,《大域変数識別子》(11.5.4.4参照)として評価する。評価結
果の値をVとする。

――――― [JIS X 3017 pdf 34] ―――――

                                                                                             29
X 3017 : 2013 (ISO/IEC 30170 : 2012)
b) “#” 《クラス変数識別子》という形式の場合,《クラス変数識別子》(11.5.4.5参照)として評価する。評
価結果の値をVとする。
c) “#” 《インスタンス変数識別子》という形式の場合,《インスタンス変数識別子》(11.5.4.6参照)として
評価する。評価結果の値をVとする。
d) “#” “[{” 《複合文》 “}]” という形式の場合,《複合文》(10.2参照)として評価する。評価結果の値をV
とする。
e) がStringクラスのインスタンスの場合,Vを《挿入文字並び》の値とする。
f) そうではない場合,Vに対してtosメソッドを実引数なしで呼び出す。評価結果の値をSとする。
g) がStringクラスのインスタンスの場合,Sを《挿入文字並び》の値とする。
h) そうではない場合,動作は未規定とする。
例 "1 + 1 = #[{1 + 1}]" は,“1 + 1 = 2” を内容としてもつ文字列を表す。

――――― [JIS X 3017 pdf 35] ―――――

次のページ PDF 36

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

  • ISO/IEC 30170:2012(IDT)

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