Riceのソースコードを構成する最小要素

トークン

トークンとは、Riceのソースコードとして意味を持つ最小の構成要素を意味する。以下はトークンの種類である。


識別子

予約語

記号

リテラル

コメント

空白


識別子

識別子は、ソースコード内で定義された名前を意味する。以下は識別子のために使用される正規表現である。


[_a-zA-Z][_a-zA-Z0-9]*


つまり、識別子とは、以下の条件を満足する文字列である。


一文字目が、アンダースコアかアルファベット。

その後、アンダースコア、アルファベット、または数字が0回以上繰り返す。


予約語も上記の条件を満足するが、識別子として使用することはできない。大文字と小文字は区別される。識別子の文字数に制限はない。

Ver 1.1.0.0 : 予約語と識別子の関係に対する構文規則を変更。

上記の制限が緩和された。ドット演算子の直後に現れた予約語は、例外的に識別子として認識される。

予約語

識別子としての規則を満たしながら識別子ではないトークンは予約語である。Riceの予約語はキーワードやクラス名から成る。

以下は、キーワードの一覧である。


import

class

endclass

ec

method

endmethod

em

setter

endsetter

es

getter

endgetter

eg

fitter

endfitter

ef

try

catch

endtry

et

if

elseif

else

endif

ei

while

endwhile

ew

each

endeach

ee

fromto

endfromto

eft

keepon

endkeepon

eko

return

break

continue

throw

true

false

open

closed

new

this


キーワードは必ず予約語である。つまり、キーワードはRiceのすべての文脈で識別子になることはない。

キーワードとは異なり、クラス名は文脈によって識別子として使用することができる。基本クラス名は常に予約語であるが、組み込みクラス名が予約語であるかは文脈に依存する。ユーザ定義クラス名は常に識別子として使用できる。

組み込みを実行された組み込みクラス名は、次のソースファイルの読み込みから予約語になる。

以下の三つのクラス名は予約語である。


void

error

dummy


これらは、ユーザが使用することが出来ない、Riceの実装で使用されるクラスである。

クラスの種類については、該当するマニュアルを参照すること。

Ver 1.1.0.0: 予約語と識別子の関係に対する構文規則を変更。

上記の制限が緩和された。ドット演算子の直後に現れた予約語は、例外的に識別子として認識される。

Ver 1.2.0.0: 予約語の追加。

endxx の省略形、keepon 文関連の予約語を追加。

記号

以下は、記号の一覧である。


=

;

{

}

(

)

,

.

+

++

-

--

!

*

/

%

>

<

>=

<=

==

!=

$$

!$

&

|

//

/*

*/

Ver 1.2.0.0: ++ -- を追加。

リテラル

リテラルとは、コード上に直に記述された値である。

Riceには、以下のリテラルがある。


intリテラル

longリテラル

realリテラル

stringリテラル

boolリテラル


intリテラル

以下はintリテラルのために使用される正規表現である。


[0]

[1-9][0-9]*

[1-9][0-9]*I


つまり、intリテラルとは、以下の条件を満足する文字列である。


0

一文字目が、0以外の数字で、その後にゼロ回以上の数字の繰り返しが続く文字の列

一文字目が、0以外の数字で、その後にゼロ回以上の数字の繰り返しが続き、その後にIが続く文字の列


整数リテラルの範囲は、int型と同じである。詳しくは、int型のマニュアルを参照すること。

longリテラル

以下はlongリテラルのために使用される正規表現である。


[1-9][0-9]*L


つまり、longリテラルとは、以下の条件を満足する文字列である。


一文字目が、0以外の数字で、その後にゼロ回以上の数字の繰り返しが続き、その後にLが続く文字の列


longリテラルの範囲は、long型と同じである。詳しくは、long型のマニュアルを参照すること。

realリテラル

以下はrealリテラルのために使用される正規表現である。


[1-9][0-9]*\.[0-9]+

0\.[0-9]+

.[0-9]+


つまり、realリテラルとは、以下の条件を満足する文字列である。


一文字目が、0以外の数字で、その後にゼロ回以上の数字の繰り返しが続き、その後に.が続き、その後に一回以上の数字の繰り返しが続く文字の列

一文字目が、0で、その後に.が続き、その後に一回以上の数字の繰り返しが続く文字の列

一文字目が、.で、その後に一回以上の数字の繰り返しが続く文字の列


実数リテラルの範囲は、real型と同じである。詳しくは、real型のマニュアルを参照すること。

stringリテラル

以下はstringリテラルのために使用される正規表現である。


\"(.*?)\"


つまり、stringリテラルとは、以下の条件を満足する文字列である。


二重引用符で囲まれた二重引用符以外の文字を繰り返す文字列。


stringリテラルではすべての文字を使用することができるが、改行文字、タブ、ダブルクォート等をstringリテラルの中に直接記述する方法は無い。つまり、Riceにエスケープシーケンスは存在しない。

エスケープシーケンスが必要な時は、代わりに文字列の連結か置き換えを使う。詳しくは、エスケープシーケンスのマニュアルを参照すること。

boolリテラル

boolリテラルは、trueとfalseである。

コメント

コメントはソースコードに挿入された注釈である。プログラムの実行時には無視される。

Riceには、以下のコメントがある。


単一行コメント

複数行コメント

名前付きコメント

Ver 1.2.0.0: 名前付きコメントを追加。

単一行コメント

以下は単一行コメントのために使用される正規表現である。


//.*


つまり、単一行コメントとは、以下の条件を満足する文字列である。


//で始まる、行末までの文字の列


複数行コメント

以下は複数行コメントのために使用される正規表現である。


/\*([\s\S]*?)\*/


つまり、複数行コメントとは、以下の条件を満足する文字列である。


/*と*/で囲まれた文字の列


名前付きコメント

名前付きコメントは内容をプログラムから参照するための特別な書式を持つ複数行コメントである。

詳細については名前付きコメントを参照すること。


空白

空白文字の列である。プログラムの実行時には無視される。

以下は空白のために使用される正規表現である。


\s+


つまり、空白とは、以下の条件を満足する文字列である。


一回以上の空白文字の繰り返し


Copyright © Rice All rights reserved.