Ejecución

Después de que FMSLogo ha analizado una línea y lo ha convertido en una lista de componentes léxicos, ejecuta ésta lista como una lista de instrucciones. Se esperan que una lista de instrucciones se componen de una o más instrucciones, que son expresiones que no devuelven nada. Cuando FMSLogo encuentra un componente léxico que no es ni variable, ni número, ni palabra, ni operador infijo, ni paréntesis, ni corchete, entonces FMSLogo lo interpreta como nombre de procedimiento. Si el componente léxico es el nombre de una primitiva o un procedimiento que ya ha sido definido, entonces FMSLogo ejecuta ese procedimiento. De lo contrario, FMSLogo intenta cargar el procedimiento en el área de trabajo. FMSLogo busca primero un archivo en el directorio de trabajo actual llamado procedimiento.lgo donde «procedimiento» es el nombre del procedimiento en letras minúsculas. Si un tal archivo existe, FMSLogo carga ese archivo (como con la primitiva CARGA). Si no hubiese errores y el procedimiento ahora es definido, entonces FMSLogo lo ejecuta. Sin embargo, si el procedimiento aún no es definido, FMSLogo busca un archivo llamado procedimiento (sin «.lgo») en el directorio de biblioteca y, si existe, lo carga. Si no hubiese errores y el procedimiento fue definido en cargando el archivo de biblioteca, entonces FMSLogo lo ejecuta. Si aún no tiene una definición para el procedimiento, FMSLogo lanza un «no sé cómo realizar» error.

Para ejecutar un procedimiento, FMSLogo debe determinar cuantos argumentos a proveer. Si el nombre de procedimiento no sigue un paréntesis, entonces FMSLogo continúe analizando y ejecutando recursivamente los componentes léxicos que siguen el nombre de procedimiento en la línea hasta que tenga suficientes valores para satisfacer el número de argumentos por defecto del procedimiento. Entonces, ejecuta el procedimiento, proveyendo esos valores como argumentos. Por lo contrario, si el nombre de procedimiento sí sigue un paréntesis, entonces FMSLogo continúe analizando y ejecutando recursivamente los componentes léxicos que siguen el nombre de procedimiento en la línea hasta el paréntesis que cierre coincidente. En ambos casos, después de ejecutar el procedimiento, cualquier componente léxico que sigue los argumentos se ejecutan como la instrucción siguiente.


SourceForge.net Logo