Saltar al contenido principal

Instrucciones

Gramática​

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

Asignación​

name = expression; es una instrucción, no una expresión. Por eso a = b = 1;, if (x = 5) y f(x = 1) son todos errores. No hay asignación compuesta (+=) ni ++/--. Escriba i = i + 1;.

Instrucciones de expresión​

Cualquier expresión seguida de ; es una instrucción, y su valor se descarta. Así se llama a una función integrada por su efecto: WindowMinimize(w);. El Bool que devuelve la mayoría de las funciones integradas se ignora a menos que lo capture: ok = FileDelete(p);.

if / else​

Los paréntesis alrededor de la condición son obligatorios. La rama es una sola instrucción o un bloque { }. else if es simplemente un else cuya instrucción es otro if, así que las cadenas funcionan. Un else colgante pertenece al if más cercano. Use llaves cuando eso resulte ambiguo.

n = MathRandom(1, 100);
if (n < 10) {
size = "small";
} else if (n < 50) {
size = "medium";
} else {
size = "large";
}
if (n == 42) UtilityPrint("the answer"); // rama de una sola instrucción, sin llaves

for​

for (init; condition; step) body. Las tres partes son obligatorias. init y step deben ser cada una una sola asignación name = expression, sin listas separadas por comas y sin llamadas sueltas. condition es cualquier expresión y se comprueba antes de cada pasada, incluida la primera. step se ejecuta después de cada pasada.

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

Es el único bucle. No hay while, do, break, continue ni for x in …. Los sustitutos habituales están en Patrones de control de flujo.

Bloques​

{ ... } agrupa instrucciones en cualquier lugar donde se espera una sola instrucción, incluido el nivel superior. No abre un nuevo ámbito de variables.