Specript Language Reference rev.0.7.0 www.specript.org

目次 | << 前章 | 次章 >>

2.字句構造

2−1.文字セット

Specriptのソースコードファイルは、物理的にはShift-JIS、EUC-JP、UTF-8など Specriptコンパイラのサポートするいくつかのエンコードを用いて作成することが できます。

ソースコードファイルの作成にどのようなエンコードを用いても、Specriptコンパイラは、 読み込んだソースコードファイルを内部的にUnicode文字セットへ変換します。

Specriptでは、ソースコードは論理的にはUnicode文字セットで表現されたものとして 扱います。

2−2.Unicodeエスケープ

Specriptのソースコードには、Java同様のUnicodeエスケープを記述することができます。

2−3.物理行末

Specriptでは、以下のいずれをもソースコードの物理行末と認識します。

CR + LF U000D (CARRIAGE RETURN) + U000A (LINE FEED)
LF U000A (LINE FEED)
CR U000D (CARRIAGE RETURN)

2−4.ホワイトスペース

下記の文字種はいずれも空白(ホワイトスペース)として認識されます。

SPACE U0020 (SPACE)
TAB U0009 (CHARACTER TABULATION)
FORM FEED U000C (FORM FEED)
物理行末

2−5.コメント

Specriptでは、C++/Java同様の2種類のコメント記述ができます。

  • ブロックコメント
  • "/*"〜"*/"の間がコメントとなります。 途中物理行末が含まれていても構いません。

  • 行コメント
  • "//"で始まって物理行末までがコメントとして認識されます。

    2−6.予約語

    Specriptにおける予約語を下記に列挙します。これらは識別子として使用することが できません。

    alias binary boolean constraint date decimal extern false featured function in integer intern is list map namespace not null private property public range real record spec SPEC string system this timestamp true using

    2−7.識別子

    識別子は、

    namespace名
    alias名
    property名
    function名
    spec名

    として使用されます。 識別子には、C言語同様のルールで英数字とアンダースコアが使用できます。加えて日本語文字等を 使用することができます。また、""や""などの全角記号類、 ""、""などの全角数字類も識別子に使用することができます。

    Javaでは日本語文字等を識別子に使用できますが、全角ハイフン""などの 全角記号類は使用できません。Specriptでは""など全角記号類も識別子に 使用することがきます。

    詳細には下記文字種を下記ルールで使用することができます。

    1. 第1文字目は下記のいずれかの文字種であること。

  • 英大文字("A"〜"Z")
  • 英小文字("a"〜"z")
  • アンダースコア("_")
  • UnicodeでU00A1〜UDFFFの文字
  • UnicodeでUF900〜UFFF8の文字
  • 2. 2文字目以降は下記のいずれかの文字種であること。

  • 英大文字("A"〜"Z")
  • 英小文字("a"〜"z")
  • アンダースコア("_")
  • 数字("0"〜"9")
  • UnicodeでU00A1〜UDFFFの文字
  • UnicodeでUF900〜UFFF8の文字
  • なお、識別子の英大文字小文字は区別されます。文字数の制限はありません。

    2−8.リテラル

    Specriptでは、全てのタイプに対応したリテラル表現がサポートされます。 dateやtimestampに対応したリテラル表現も可能です。

    Specriptの扱うタイプについては第3章をご参照ください。

    リテラルは、式中で式の最小構成単位を成すものとして使用されます。

    式については第8章を参照してください。

    なお、record、list、mapの値も、それぞれrecord生成式、list生成式、map生成式として ソースコード上に表現可能です。これらについては第8章第3節を ご参照ください。

    2−8−1.integerリテラル

    10進数値列、または"0x"で始まる16進数値列です。"-"または "+"の符号を付与できます。整数‘零’(‘0’)を表すときおよび16進数表現以外で、 先頭に"0"があってはいけません。ただし、8進数表現はサポートしません。 16進数表現に用いるアルファベットは大文字でも小文字でも構いません。

    【記述例】
        0
        1
        234923049460545976657257647544523492
        -45698740907
        +60823
        0xa87e
        -0x003ac5
        +0x19de8234ccf498a
        

    2−8−2.decimalリテラル

    小数点を含む10進数値列です。必ず小数点"."を記述します。小数点を 含まない場合integerリテラルであると認識されます。 先頭に"0"があって構いません。小数点を含む16進数値列はサポートしません。

    【記述例】
        0.0
        000.000
        1.00
        345.3500
        00045.92300
        -547845798349582.34393483490006
        +4523555.35039
        

    2−8−3.realリテラル

    realのリテラル表現は、常に"e"を使用した指数形式で記述します。 "3.14159265"のように指数表現を用いなかった場合はdecimalリテラルで あると認識されます。"e"は大文字でも小文字でも構いません。16進数表現は サポートしません。

    【記述例】
        3.3678e3
        435.3453e-4
        -0.7965e+34
        +3.35e-65
        

    2−8−4.booleanリテラル

    真値を表す"true"と偽値を表す"false"の二つがあります。

    【記述例】
        true
        false
        

    2−8−5.stringリテラル

    ダブルクォーテーションで括って任意の文字列が記述できます。ほぼJava同様の "\"に続けたエスケープがサポートされます。

    【記述例】
        ""
        "\""
        "This program is written in Specript Language."
        "僕のホームは秋葉原です。"
        "これは1行目\nこれは2行目\n"
        

    2−8−6.dateリテラルとtimestampリテラル

    シングルクォーテーションで括って日付値または日時値を表現できます。シングルクォーテーションで 括った文字列は常にdateまたはtimestampのリテラルを表現していると認識されます。 シングルクォーテーションで括った文字列がdateまたはtimestampリテラルとして認識できない 場合、コンパイル時エラーとなります。ダブルクォーテーションで括った文字列は、 それがdateまたはtimestampのリテラル表現と同一でも、stringリテラルであると 認識されます。

    dateリテラルの書式は'YYYY-MM-DD'、timestampリテラルの書式は 'YYYY-MM-DD HH:MM:SS'または'YYYY-MM-DD HH:MM:SS.sss'の 何れかとなります。日付または日時として存在しない値の場合はコンパイル時エラーと なります。

    【dateリテラルの記述例】
        '2096-04-23'
        '1903-12-31'
        
    【timestampリテラルの記述例】
        '2008-02-02 01:05:08'
        '2096-04-23 03:55:23.040'
        '9999-12-31 23:59:59.999'
        

    2−8−7.nullリテラル

    NULL値を表すリテラル表現をサポートします。

    【記述例】
        null
        

    Specriptのタイプに参照タイプはありません。Specriptにおけるnullは 「値が無い」、「値が未設定である」、「値が未決定である」ことを表します。

    2−9.記号(セパレータ、オペレータ)

    Specriptは下記41種の記号類をセパレータまたはオペレータとして認識します。

    :: ( ) { } [ ] : = .. => , # ## ; | . + - ! * / % < > <= >= == != =~ && || ? ==? !=? =~? <? >? <=? >=? <<

    目次 | << 前章 | 次章 >>


    (c)2007-2008, Specript Development Team Last Updated: 2008-03-06