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+
つまり、空白とは、以下の条件を満足する文字列である。
一回以上の空白文字の繰り返し