BraulioVM / pl

0 stars 0 forks source link

Arreglar `TS_identificador_libre` #7

Closed BraulioVM closed 6 years ago

BraulioVM commented 6 years ago

La función TS_identificador_libre no funciona correctamente en el caso de que se declare una variable en el bloque principal del programa porque buscará ver si el identificador que se desea declarar ha sido declarado como parámetro de algún procedimiento superior (que en este caso no existe).

Hay que tener en cuenta que:

  1. No tiene por qué haber un procedimiento superior
  2. No tiene por qué haber solo un procedimiento superior (procedimientos anidados)
namasme commented 6 years ago

Soy consciente de ello, pero

  1. Se puede insertar una marca al inicio del programa que, en realidad, no sería descabellada y ayudaría tener el invariante de que en cualquier punto hay una marca superior. Además también ayudaría porque así la pila nunca está vacía y podemos inicializar tope = 0 y así declararlo como uint. Lo pensé pero se me olvidó hacerlo.
  2. El resto de procedimientos dan igual, se pueden machacar variables de scopes externos (digo yo).