En la expresión indicada en el programa se utiliza el operador ++ (o el operador --) incorrectamente, con el fin de incrementar (o decrementar) un objeto. Dicho objeto no tiene dirección, pues no es una variable, tabla o estructura, por lo que el compilador no puede realizar un incremento (o decremento) sobre el mismo.
Probablemente se haya pretendido incrementar o decrementar una expresión constante o una que involucre varios operandos.
A continuación, se muestra un programa con varios ejemplos de uso válido de los operadores ++ y --, y otros tantos inválidos.
PROGRAM mi_juego; CONST mi_constante=0; GLOBAL mi_variable=0; mi_tabla[10]; STRUCT mi_estructura[10] variable; END BEGIN // Ejemplos correctos mi_variable++; mi_tabla--; ++mi_tabla[mi_variable]; --mi_estructura[0].variable; id.x++; // Ejemplos erróneos (mi_variable*2)++; mi_constante--; ++0; --(mi_variable+1); END
Las constantes como mi_constante no se pueden incrementar pues son simples sinónimos del valor numérico que representan.
La sentencia (mi_variable*2)++; es errónea debido a que la multiplicación se realiza en primer lugar y, una vez realizada, el valor mi_variable*2 se convierte en un resultado numérico que no tiene dirección y, por lo tanto, no se puede acceder a ella para incrementarlo.
En este caso, probablemente, la sentencia correcta que se debería haber utilizado habría sido mi_variable=mi_variable*2+1;