domingo, 12 de agosto de 2007

Procedimientos

Hoy implementé los detalles que faltaban para el soporte de procedimientos. Ahora se puede utilizar la sentencia:

nombre(p1,...,pn)

La semántica de pasaje de parámetros es la siguiente:
  • Si un parámetro es de tipo arreglo, entonces se espera un arreglo, denotado nombre_arreglo[]
  • Si un parámetro es de tipo entero, se espera una variable entera.
  • Adicionalmente, cuando un parámetro es de tipo entero, se puede esperar una expresión como por ejemplo un número entero. La misma es evaluada y pasada como parámetro. La salida de ese parámetro no es observable.
Dado que todos los parámetros se manejan como inout, o referencias, y no queremos generar aliasing, se espera que todos los parámetros sean distintos entre si.

Un día de estos tengo que implementar un chequeo que restrinja todo tipo de recursividad. Para eso hay que construir un grafo de llamados y ver que no tenga ciclos.

No hay comentarios.: