본문으로 건너뛰기

문

문법​

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 …는 없습니다. 표준 대체 방법은 흐름 제어 관용구에 있습니다.

블록​

{ ... }는 최상위를 포함하여 단일 문이 올 수 있는 모든 곳에서 문을 묶습니다. 새 변수 범위를 만들지 않습니다.