Aller au contenu principal

Instructions

Grammaire​

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 } ] ")" ;

Affectation​

name = expression; est une instruction, pas une expression. Ainsi a = b = 1;, if (x = 5) et f(x = 1) sont tous des erreurs. Il n'y a pas d'affectation composée (+=) ni de ++/--. Écrivez i = i + 1;.

Instructions d'expression​

Toute expression suivie de ; est une instruction, et sa valeur est abandonnée. C'est ainsi qu'on appelle une fonction intégrée pour son effet : WindowMinimize(w);. Le Bool que renvoient la plupart des fonctions intégrées est ignoré, sauf si vous le récupérez : ok = FileDelete(p);.

if / else​

Les parenthèses autour de la condition sont obligatoires. La branche est une instruction unique ou un bloc { }. else if n'est qu'un else dont l'instruction est un autre if : les enchaînements fonctionnent donc. Un else pendant se rattache au if le plus proche. Utilisez des accolades en cas d'ambiguïté.

n = MathRandom(1, 100);
if (n < 10) {
size = "small";
} else if (n < 50) {
size = "medium";
} else {
size = "large";
}
if (n == 42) UtilityPrint("the answer"); // branche à instruction unique, sans accolades

for​

for (init; condition; step) body. Les trois parties sont obligatoires. init et step doivent chacune être une seule affectation name = expression, sans liste séparée par des virgules ni appel seul. condition est une expression quelconque, évaluée avant chaque passage, y compris le premier. step s'exécute après chaque passage.

for (i = 10; i > 0; i = i - 2) {
UtilityPrint(StringFormat("{0}", i, "")); // 10 8 6 4 2
}

C'est la seule boucle. Il n'y a ni while, ni do, ni break, ni continue, ni for x in …. Les substituts habituels figurent dans Idiomes de contrôle du flux.

Blocs​

{ ... } regroupe des instructions partout où une instruction unique est attendue, y compris au niveau supérieur. Il n'ouvre pas de nouvelle portée de variables.