# プリプロセッサ

TJS2 は、条件コンパイル式 ( C の #if や #endif に対応するもの ) の処理を行うことができます。これは、スクリプトが実際に解釈される前に処理され、条件によってスクリプトの部分を解釈させないようにしたり、解釈させるようにしたりする事ができます。
条件コンパイル式のスタイルは C のプリプロセッサ指令とは違い、フリースタイルとなり、どこにでも書くことができます。C の指令のように、一行に１指令のみを書かなければならないと言うことはありません。

# @set 指令

@set 指令は、条件コンパイル式を評価し、結果を捨てます。構文は以下の通りです。
`@set(式)
`
「式」には条件コンパイル式を書きます。ここには、以下の演算子を使うことができます。
`, = != == || && | ^ & < > <= >= + - % * / ! + - ( )
`
これらの演算子の意味については 式と演算子 をご覧ください。ただし、扱えるデータ型は整数のみです。
また、任意の変数、即値を使用することができます。変数名の命名規則については、 トークン の変数の命名規則や即値と同じ規則が適用されます。
ただし、プリプロセッサ中で使用する変数と、TJS2 スクリプト中で使用する変数は干渉しません ( 同じ名前空間を共有しません )。

# @if 指令, @endif 指令

@if 指令は、条件コンパイル式を評価し、結果が 0 であれば、次に @endif が来るまで、その間を解釈しないようにします。結果が 0 以外の場合は解釈されます。
構文は以下の通りです。
`@if(式) ... @endif
`
「式」には条件コンパイル式を指定します。 @if 〜 @endif は入れ子にできます。
`例:
@if(flag==0) // まだ何も代入されていない変数は 0 であると見なされる
@set(flag=1)
****
@endif
// ↑ **** の部分に書かれたスクリプトのコンパイルを一度きりのものとする
@if(version>=0x02040009)
@if(flag)
****
@endif
@endif
// ↑ version が 0x02040009 (2.4.9) 以上で flag が 0 以外の時のみ **** の部分をコンパイルする
`

# 定義済み変数

version 変数が、現在の TJS2 のバージョンを表しています。
数値として、16進数で 0x0XYYZZZZ の形式であり、 X の部分はメジャーバージョン、YY の部分はマイナーバージョン、ZZZZ はリリース番号を表します。たとえば 0x02040009 であれば、バージョンは 2.4.9 です。