Links
UJML Language Reference
コンパイル

コンパイルとは、UJMLソースコードをUJMLバイトコードに変換する処理のことを指します。

コンパイラはUJMLソースコードファイルを読み込み、UJMLバイトコードファイルを出力します。 関連項目: UJMLファイルの種類。 UJML用のコンパイラは、ビジュアルなデバッガーからウェブベースのコンパイラサーブレットまで、 異なるコンテキストに合わせて数種類が用意されています。 コンパイラの使用に関しては、お使いのコンパイラに同梱されているマニュアルをご参照ください。

コンパイラ設定

コンパイラ設定とは、コンパイラがUJMLソースコードをバイトコードに変換する方法を変更する設定のことを指します。 設定にはさまざまなものがあり、使用するコンパイラによって異なります。 全コンパイラに共通で指定できる、最も重要な設定は 'Trace' と 'Debug' の2つです。 

'Trace' 設定には、true (有効)または false(無効)のどちらかの値を設定します。 'Trace' 設定が true の場合に_trace() 関数を使用すると、 UJML コンパイラはコードを出力します。 関連項目: デバッグ_trace() function。 その他の場合、コンパイラは _trace() 関数を無視します。 

'Debug' 設定は、デバッガーによって使用されるバイトコード内の特殊なシンボルをコンパイラに出力させるか否かを決定します。 デバッガーではなく、デバイス上で実行するコードをコンパイルする場合にこの設定を有効にしてはなりません。

条件付きコンパイル

条件付きコンパイルを行うには処理命令という、名前の定義または定義の解消を行い、その名前の定義の有無を判定する 特殊なUJMLタグを使用します。 関連項目: Compilation Tags。 条件付きコンパイルのテストは処理命令に応じてコンパイルすべき(またはコンパイルを省くべき)コードブロックを作成します。 

備考: 特定の値を定義するC言語スタイルのプリプロセッサ命令と異なり、UJML処理命令では文字列名を使用し、 その文字列名が定義済みまたは未定義であることをテストします。 

UJMLコンパイラには、コンパイラ処理命令の中に条件付きコンパイル名を定義することができるものもあります。

次の例では、条件付コンパイル名'LUNARLANDER' が未定義である場合にのみ、条件付きコンパイル名'MARSLANDER'を定義します。このサンプルコードは、lunarlander.ujml サンプルコードの一部です。

<?ujml-ifndef LUNARLANDER?>
<?ujml-define MARSLANDER?>
<?ujml-endif?>

 

次の例では、入れ子構造の条件付コンパイルブロックの使用例です。 このサンプルコードは lunarlander.ujml サンプルコードの一部です。

<?ujml-ifdef MARSLANDER?>
// Environment.
mAppName = "&APP_NAME_MARS;" ;
mFrameMsec = 100;
mGravity = 2;
mFloorHeight = 6;
<?ujml-ifdef EASYPLAY?>
mSafeLandingVelocity = 16;
mThrust = 6;
mMaxFuel = 72;
<?ujml-else?>
mSafeLandingVelocity = 10;
mThrust = 5;
mMaxFuel = 60;
<?ujml-endif?>
// Images.
mLanderImageURL = _image_url("img/landerstrip");
mLanderWidth = 44;
mLanderHeight = 32;
mBackGroundTileImageURL = _image_url("img/skytile");
mSurfaceTileWidth = 96;
mSurfaceTileHeight = 28;
mSurfaceTileImageURL = _image_url("img/marssurfacetile");
mBackGroundTileWidth = 96;
mBackGroundTileHeight = 96;
<?ujml-else?>
// Environment.
mAppName = "&APP_NAME;" ;
mFrameMsec = 100;
mGravity = 1;
mFloorHeight = 6;
<?ujml-ifdef EASYPLAY?>
mSafeLandingVelocity = 9;
mThrust = 6;
mMaxFuel = 60;
<?ujml-else?>
mSafeLandingVelocity = 7;
mThrust = 4;
mMaxFuel = 36;
<?ujml-endif?>
// Images.
mLanderImageURL = _image_url("img/landerstrip");
mLanderWidth = 44;
mLanderHeight = 32;
mBackGroundTileImageURL = _image_url("img/spacetile");
mSurfaceTileWidth = 96;
mSurfaceTileHeight = 28;
mSurfaceTileImageURL = _image_url("img/surfacetile");
mBackGroundTileWidth = 96;
mBackGroundTileHeight = 96;
<?ujml-endif?>
Copyright (c) 2000-2005 by UIEvolution, Inc. All rights reserved.
この項目に関するフィードバックをお寄せください。 Send feedback!