Este documento y su código fuente asociado están bajo una
licencia de Creative Commons.
|
De cara a tener una visión global del sistema que vamos a construir vamos a describir brevemente el proceso general que se seguirá durante la compilación, ensamblado y ejecución de nuestro script, y cada uno de los módulos que van a intervenir en el proceso. |
|
![]() |
Como punto de partida se tomará el fichero con el código escrito en lenguaje FKScript, el cual será procesado por el compilador para generar un fichero en lenguaje intermedio FKIL. El proceso de compilación se desarrollará íntegramente utilizando ANTLR 3 y se dividirá en las siguientes fases:
En primer lugar, los análisis léxico y sintáctico parsearán todo el código, detectando y reportando posibles errores de sintáxis, y se generará un árbol de sintáxis abstracta (AST) con todos los elementos relevantes del código del programa y su estructura completa. Además, durante el análisis se creará la tabla de símbolos, que contendrá todas las variables del programa junto a su tipo y su número de orden en el programa. Si los análisis léxico y sintáctico se realizan sin errores se procederá al análisis semántico, que a partir de la tabla de símbolos y el AST generados en el paso anterior se encargará de enriquecer dicho AST con el tipo de cada una de las expresiones referenciadas en el programa y verificará que no existen errores de tipo en el código. Posteriormente, y si el análsis semántico se realiza correctamente, se ejecutará la fase de generación de código, que tomará como entrada el AST enriquecido y generará a partir de él el código intermedio obtenido del programa, utilizando para ello una serie de plantillas construidas a priori. Una vez generado el fichero con el código intermedio se llamará al ensamblador, que transformará dicho código en un fichero binario ejecutable por la máquina virtual. Durante el proceso de ensamblado se realizarán las siguientes tareas:
|
|
Por último, una vez generado el fichero binario final se pasará éste
como entrada a la máquina virtual para que sea
ejecutado. Ésta ejecutará cada una de las instrucciones del programa y
devolverá como resultado el último dato contenido en la pila al final
del programa. Tanto el ensamblador como la máquina virtual se
desarrollarán en C# sin utilizar ANTLR. |
|