Riceプログラムを構成する基本要素
サンプルコード
説明に使用するサンプルコードです。
1: | /*-------------------------------------------------------------------- |
2: | sample code |
3: | This is a multi-line comment. |
4: | ----------------------------------------------------------------------*/ |
5: | // This is a single-line comment. |
6: | /**Named**----------------------------- This is a named comment. |
7: | It is a body of named comment. |
8: | ----------------------------------------------------------------------*/ |
9: | import "external.88" |
10: | |
11: | class main |
12: | open method void start() |
13: | endmethod |
14: | open method void end() |
15: | endmethod |
16: | endclass |
サンプルコードはコメント、import命令、クラス定義で構成されています。
1~8行目が、コメント。
9行目が、import命令。
11行目以降が、クラスの定義。
Riceプログラムは、この三つの要素を繰り返して作られます。
更に言えば、コメントは実行時に無視されます。import命令は実行の前に外部ファイルを命令の位置に展開します。展開したファイルにコメント、import命令が有れば同じように処理されます。
その結果、プログラムの実行時にはクラス定義だけが残ります。
クラス定義の外部に存在できるのは、コメントとimport命令だけであることに注意してください。両者はプログラムの実行時に直接の影響を持ちません。
大域変数のようなプログラムの実行時に直接の影響を持つクラス定義外部の要素は存在しません。
コメント。
複数行コメント
1: | /*-------------------------------------------------------------------- |
2: | sample code |
3: | This is a multi-line comment. |
4: | ----------------------------------------------------------------------*/ |
サンプルコードの1行目から4行目は複数行のコメントの例です。
/* から */ までの間のテキストは実行時に無視されます。コメント内で改行もできるので複数行をコメントできます。
単一行コメント
5: | // This is a single-line comment. |
サンプルコードの5行目は単一行のコメントの例です。
// から行末までの間のテキストは実行時に無視されます。
名前付きコメント
6: | /**Named**----------------------------- This is a named comment. |
7: | It is a body of named comment. |
8: | ----------------------------------------------------------------------*/ |
サンプルコードの6行目から7行目は名前付きコメントの例です。
/** から */ までの間のテキストは実行時に無視されます。コメント内で改行もできるので複数行をコメントできます。
名前付きコメントはコメントの内容をプログラムから参照できます。
import命令
import命令はソースファイルを分割して記述するための機能です。
import命令の位置に指定されたソースファイルを展開します。展開したソースファイルにimport命令があれば同じ処理を繰り返します。
importキーワードに続く文字列でファイルのパスを指定します。
import命令はクラス定義の外部で自由に使用できます。
import命令のパスの指定方法は三つあります。
絶対パス指定。
相対パス指定。
拡張相対パス指定。
9: | import "external.88" |
サンプルコードの9行目がimport命令の例です。
相対パス指定によりexternal.88を指定しています。この位置にexternal.88の内容が展開されます。
絶対パス指定。
絶対パス指定は、ファイルシステムの最上位階層からパスを指定する方法です。
これはWindowsで標準的に使われるパスの指定法です。説明は省略します。
相対パス指定。
相対パス指定はカレントディレクトリを基準としてパスを記述する方法です。
これはWindowsで標準的に使われるパスの指定法です。説明は省略します。
拡張相対パス指定。
拡張相対パス指定は現在のソースファイルを基準としてパスを記述する方法です。
拡張相対パス指定では@がパス指定のための記号になります。
"@\external.88"
"@@\somewhere\external.88"
単一の@はソースファイルが置かれているディレクトリを表します。
@@はソースファイルが置かれているディレクトリの親ディレクトリを表します。
@@は繰り返すことが出来ます。例えば"@@\@@\..."は親ディレクトリの親ディレクトリを表します。
@の使用方法はドットと同じです。基準となる位置が違うだけです。
拡張相対パス指定はimport命令のための特別な表記法です。import命令以外のパス指定のために使うことは出来ません。
クラス定義
クラス定義はキーワードclass とキーワードendclassの間に記述されたメンバ定義の集合です。クラスの状態と振舞を決定します。
11: | class main |
12: | open method void start() |
13: | endmethod |
14: | open method void end() |
15: | endmethod |
16: | endclass |
サンプルコードの11行目から16行目はクラス定義の例です。
クラス定義の形式
クラス定義は以下の形式です。
class クラス名
メンバ定義
endclass
キーワードclassで始まり、クラス名を指定し、メンバ定義の後にキーワードendclassで終了します。