Closed BraulioVM closed 6 years ago
El problema aquí es que la declaración de la variable iteradora es antes del bloque, como en los procedimientos, por lo que el identificador se queda por encima de la marca
. En los procedimientos, sin embargo, se puede usar el caso especial de parametro_formal
, i.e., si hay parametro_formal
justo antes de la marca
podemos hacer las comprobaciones necesarias porque sabemos que estamos en el scope de un procedimiento.
En este caso la alternativa sería crear un nuevo t_entrada
de nombre iterador
o similar, lo cual añadiría cierta complejidad porque tendríamos una nueva comprobación en TS_identificador_libre
, TS_fin_bloque
et al. Otra opción, más hackish, es guardar en una variable iterador
el nombre que se le da, comprobar en TS_inicio_bloque
si existe y, en tal caso, añadirlo como identificador
. Después en TS_fin_bloque
habría que eliminar también la de antes de la marca y resetear la variable, de modo que la complejidad nos la comemos igual. No parece haber solución buena.
Solucionado porque de acuerdo con el profesor la variable que se utiliza en el bucle for debe ser declarada con anterioridad
Actualmente el código:
da un error por redeclarar la variable
i
. Habría que arreglar ese comportamiento