リテラル

要約:
  • リテラルは定数値です。
  • Curl® 言語では、数字リテラル、ブール値リテラル、文字リテラル、文字列リテラル、数量リテラルの他に、null リテラルもサポートしています。
リテラルは定数値で評価される表現です。たとえば、7 のような数値は、'a' がリテラルであるのと同様にリテラルであり文字でもあります。Curl 言語では、次のタイプのリテラルをサポートしています。

数字リテラル

要約:
  • 数値は数字リテラルです。
  • Curl 言語では整数リテラル、浮動小数点リテラルおよびDecimalリテラルをサポートしています。
数値は数字リテラルです。たとえば、73.25 は数字リテラルです。具体的に、数字リテラルには次の 3 つのタイプがあります。

整数リテラル

要約:
  • 整数リテラルは、小数点の右側の部分がない整数です。
  • 10 進法は整数リテラルの既定の記数法です。
  • 2 進数の場合は、0b または 0B プレフィックスを使用します。
  • 8 進数の場合は、0o または 0O プレフィックスを使用します。
  • 16 進数の場合は、0x または 0X プレフィックスを使用します。
  • 符号無しの数値の場合は、u サフィックスを使用します。
整数リテラルは、小数点の右側の部分がない整数です。つまり、整数リテラルは定整数値です。整数リテラルのフォームを次に示します。
[-]whole-number[u]
ここで、オプションのマイナス符号は負の数を表わします。またオプションの u サフィックスは符号無しの数値が生み出されなければならないことを表します。 -u が両方検出されると、まず値は負の数値へとパースされます。それから同様のビットパターンを持った符号無しの整数に強制変換されます。
有効な整数リテラルを次に示します。
注意: Curl 言語では整数リテラルにゼロを先行させることができます。
整数リテラルの既定の記数法は 10 進法ですが、整数リテラルの前に特別なコードを挿入することにより別の記数法で整数リテラルを指定できます。 10進法以外で整数を宣言する場合は、その値は2進数として表現されます。 その為、max-intmax-uintの間の数字はint64uintの値ではなく、 負の値として解釈されます。例えば、0xFFFFFFFF4294967295ではなく、-1になります。 次の表に記数法プレフィックスを示します。
記数法プレフィックス
2 進0b または 0B0b00100010
8 進0o または 0O0o42
16 進0x または 0X0x2A
Curl 言語の整数データ型の詳細については、「プリミティブ型:整数」を参照してください。

浮動小数点リテラル

要約:
  • 浮動小数点リテラルは、小数点の右側の部分がある数値です。
  • 浮動小数点リテラルは科学的記数法で使用できます。
浮動小数点リテラルは定浮動小数点数値です。浮動小数点リテラルには次の 2 つのフォームがあります。
小数点の右側の部分がある数値のフォームを次に示します。
[-][whole-number].decimal-part
ここで、オプションのマイナス符号は負の数を表わします。有効な浮動小数点リテラルを次に示します。
科学的記数法の数値のフォームを次に示します。
[-][whole-number][.decimal-part]e[-]exponent
ここで、オプションのマイナス符号は負の数を表わします。whole-number および decimal-part はオプションですが、少なくとも 1 つを指定する必要があります。有効な浮動小数点リテラルを次に示します (これは、上記の例のリテラルと同じ値です)。
注意: すべての浮動小数点リテラルは double 値として扱われます。たとえば、3e430000 であり、double として扱われ、int としては扱われません。
数値に f サフィックスを付けると、double リテラルではなく、float リテラルになります。float リテラルは拡張機能であり、定数を float 変数に代入するときや、double への昇位を望まない場合の四則演算を行うときに役に立ちます。次に例を示します。

Decimalリテラル

要約:
  • Decimalリテラルは、Decimal 型の定数を表します。
  • Decimalの数値の場合は、i サフィックスを使用します。
  • Decimalリテラルは科学的記数法で使用できます。
DecimalリテラルはDecimal数値です。数値に i サフィックスを付けると、Decimal リテラルになります。Decimal リテラルは拡張機能であり、定数を Decimal 変数に代入するときに役に立ちます。Decimalリテラルには次の 3 つのフォームがあります。
小数点の右側の部分がある数値のフォームを次に示します。
[-][whole-number].decimal-part
ここで、オプションのマイナス符号は負の数を表わします。有効なDecimalリテラルを次に示します。
科学的記数法の数値のフォームを次に示します。
[-][whole-number][.decimal-part]e[-]exponent
ここで、オプションのマイナス符号は負の数を表わします。whole-number および decimal-part はオプションですが、少なくとも 1 つを指定する必要があります。有効なDecimalリテラルを次に示します (これは、上記の例のリテラルと同じ値です)。
注意: すべてのDecimalリテラルは Decimal 値として扱われます。たとえば、3e4i30000 であり、Decimal として扱われ、int としては扱われません。

ブール値リテラル

要約:
  • ブール値リテラルはブールの値です。
  • 次の 2 つの値、true または false のいずれかになります。
ブール値は言語プリミティブで、bool データ型で表されます。ブール値リテラルは、次の 2 つの値のいずれかになります。
Curl 言語のブール値データ型の詳細については、「プリミティブ型:ブール値」を参照してください。

文字リテラル

要約:
  • 文字リテラルは 1 つの文字です。
  • 一重引用符で囲まれた 1 つの文字になります。
  • 一重引用符で囲まれたエスケープ シーケンスになります。
  • 演算時に、文字リテラルは対応する数値に変換されます。
文字リテラルは 1 つの文字です。次のいずれかのフォームを使用します。
エスケープ シーケンスは、キーボード上にない文字や、別の方法ではランタイムが文字リテラルを誤って解釈するような文字を指定します。キーボード上に表示されない文字には、改行文字、キャリッジ リターン文字およびタブ文字があります。誤った解釈を避けるためにエスケープする必要のある文字には、一重引用符およびバックスラッシュがあります。エスケープ シーケンスはエスケープ文字 (\) で始まります。次の表に文字リテラルのエスケープ シーケンスを示します。
エスケープ シーケンス説明
\uXXXXXXXX は Unicode の16進数の値である特殊文字。 0xFFFF より大きい値はこのシーケンスを使用して表すことができません。
\UXXXXXXXXXXXXXXXX が Unicode の16進数の値である特殊文字。
\n改行文字
\rキャリッジ リターン文字
\tタブ文字
\'一重引用符文字
\"二重引用符文字
\\バックスラッシュ (エスケープ) 文字
\{左中カッコ
\}右中カッコ
\|垂直バー
\ 空白文字
\=等号記号
\[左角カッコ
\]右角カッコ
\(左丸カッコ
\)右丸カッコ
最後の 4 つの文字はエスケープの必要はありませんが、エスケープすることにより角カッコや丸カッコを一致させる場合の混乱を防ぐことができます。
Curl 言語では、演算時に文字リテラルを使用できます。文字リテラルで演算を行うときは、文字の Unicode 値が使用されます。文字リテラルは数字リテラルに変換されて、演算が行われます。例を次に示します。

例: 演算時の文字リテラル
{VBox
    || Add the character literal 'c' and the integer 3...
    || Note that the Unicode value of 'c' is 99.
    {text 'c' + 3 is ... {value 'c' + 3}},

    || Subtract 3 from the character literal 'd'...
    || Note that the Unicode value of 'd' is 100.
    {text 'd' - 3 is ... {value 'd' - 3}},

    || Subtract the character literal 'a' from the
    || character literal 'd'.  Note that the Unicode
    || values for 'a' is 97.
    {text 'd' - 'a' is ... {value 'd' - 'a'}},

    || Subtract the character literal 'd' from the
    || character literal 'd'.
    {text 'a' - 'd' is ... {value 'a' - 'd'}},

    || Is 'c' + 3 equal to the character literal 'f'...
    || Note that the Unicode values for 'f' is 102.
    {text 'c' + 3 == 'f' is ... {value 'c' + 3 == 'f'}}
}
注意: 上記の例では、'c' + 3 のような演算子表現を value 式で囲みます。テキスト形式では、value 式を使用して、囲まれたコードをテキストではなく表現として扱う必要があります。
Curl 言語の文字データ型の詳細については、「プリミティブ型:文字」を参照してください。

文字列リテラル

要約:
  • 文字列リテラルは 0 個以上の文字の列です。
  • 文字列リテラルは二重引用符 (") で囲みます。
文字列リテラルは、テキストの固定 String です。文字列リテラルは 0 個以上の文字で構成され、二重引用符 (") で囲まれます。二重引用符の間に文字がない文字列リテラル ("") は空文字列です。
文字列リテラルでは、キーボード上にない文字や、別の方法ではランタイムが文字リテラルを誤って解釈するような文字に対してエスケープ シーケンスを含めることができます。特に、二重引用符や文字列リテラルの予約文字は必ずエスケープする必要があります。文字列リテラルは、上記ので示された文字リテラルのエスケープ シーケンスを使用できます。
文字列リテラルにエスケープ シーケンスが多く含まれる場合は、エスケープ シーケンスの代わりに逐語的文字列を使用することを推奨します。詳細については、「逐語的文字列」を参照してください。
文字列の連結では、Curl 言語は文字列連結演算子 (&) を提供しています。文字列連結演算子の詳細については、「演算子」の章を参照してください。

例: 文字列リテラル
{VBox
    || A string literal with some text that includes spaces...
    "string literal text",

    || The empty string...
    "",

    || A string literal consisting of one double quote...
    "\"",

    || A string literal spanning multiple lines...
    "This is a
    multiple line
    string",

    || A string literal spanning multiple lines with
    || extra whitespace...
    "This is a
    multiple line

    string with extra         whitespace",

    || Using the string concatenation operator...
    "\"" & "string literal text" & "\""
}
文字列リテラルを内部的に表すときには、ランタイムは文字列リテラルのそれぞれの文字を格納します。2 つの単語の間に空白が多数ある場合は個々の空白文字が格納され、文字列リテラル内の空白が保持されます。内容が表示されるときに空白は削除されます。これは、文字列リテラルの内部表現では空白は保持され、印字表現では空白は保持されないことを意味します。
注意: 出力ログが文字列を表示するときには空白は削除されません。
文字列クラス タイプの詳細については、「文字列」を参照してください。

数量リテラル

要約:
  • 数量リテラルは、数字リテラルと後に続く測定単位で構成されます。
数量リテラルは、数字リテラルと後に続く測定単位で構成され、間に空白は入りません。例を次に示します。
数量リテラルで演算を行うときに、ランタイムは測定単位を理解します。たとえば、5cm (5 センチ) に 5m (5 メートル) を加えることができ、正しい結果 (5.05m) が得られます。数量とサポートされる測定単位の詳細については、「数量と単位」を、数量データ型に関しては、「プリミティブ型 : 数量」を参照してください。
注意: 浮動小数点リテラルと同様、数量リテラルは主に double 値として表され、四則演算は倍精度浮動小数点として行われます。float 表現の数量を必要とするような例外的な場合は、float リテラルに限り f サフィックスを使用できます。測定単位と f サフィックスを区別するために、測定単位をカッコで囲む必要があります。例を次に示します。

null リテラル

要約:
null 値はリテラルです。
null 値は、拡張クラス タイプ (ヌル型を許容) の変数およびプロシージャ タイプの変数がオブジェクトを参照しない場合にプレースホルダーとして使用される特殊な定数です。
Curl 言語における null の使用方法については、「null」を参照してください。