문
문법
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
조건을 감싸는 괄호는 필수입니다. 분기는 단일 문이거나 { } 블록입니다. 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. 세 부분 모두 필수입니다. init과 step은 각각 단일
name = expression 할당이어야 하며, 쉼표로 구분한 목록이나 단독 호출은 쓸 수 없습니다.
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 …는 없습니다. 표준 대체 방법은
흐름 제어 관용구에 있습니다.
블록
{ ... }는 최상위를 포함하여 단일 문이 올 수 있는 모든 곳에서 문을 묶습니다. 새 변수 범위를 만들지
않습니다.