ステートメント
文法
program = { statement } ;
statement = assignment | exprStmt | block | ifStmt | forStmt | ";" ;
assignment = identifier "=" expression ";" ;
exprStmt = expression ";" ; (* result discarded, e.g. a builtin call *)
block = "{" { statement } "}" ;
ifStmt = "if" "(" expression ")" statement [ "else" statement ] ;
forStmt = "for" "(" identifier "=" expression ";"
expression ";"
identifier "=" expression ")" statement ;
expression = see the precedence table under Operators ;
call = identifier "(" [ expression { "," expression } ] ")" ;
代入
name = expression; は式ではなくステートメントです。そのため、a = b = 1;、if (x = 5)、
f(x = 1) はいずれもエラーになります。複合代入 (+=) や ++/-- はありません。
i = i + 1; と書いてください。
式ステートメント
任意の式の後に ; を付けるとステートメントになり、その値は破棄されます。組み込み関数を効果のために呼び出すときは、
この形を使います: WindowMinimize(w);。ほとんどの組み込み関数が返す Bool は、受け取らない限り無視されます:
ok = FileDelete(p);。
if / else
条件を囲むかっこは必須です。分岐は 1 つのステートメントか { } ブロックです。
else if は、ステートメントが別の if である else にすぎないため、連鎖させることができます。
ぶら下がった else は最も近い if に属します。あいまいになる場合は中かっこを使用してください。
n = MathRandom(1, 100);
if (n < 10) {
size = "small";
} else if (n < 50) {
size = "medium";
} else {
size = "large";
}
if (n == 42) UtilityPrint("the answer"); // 単一ステートメントの分岐、中かっこなし
for
for (init; condition; step) body。3 つの部分はすべて必須です。init と step はそれぞれ
name = expression の代入 1 つでなければならず、カンマ区切りのリストや関数呼び出しだけを書くことはできません。
condition は任意の式で、最初を含む各回の前に評価されます。step は各回の後に実行されます。
for (i = 10; i > 0; i = i - 2) {
UtilityPrint(StringFormat("{0}", i, "")); // 10 8 6 4 2
}
ループはこれだけです。while、do、break、continue、for x in … はありません。
標準的な代わりの書き方は制御フローの定番の書き方にあります。
ブロック
{ ... } は、単一のステートメントが期待される場所であればトップ レベルを含めてどこでも、ステートメントをまとめます。
新しい変数スコープは作りません。