Inicio Proyectos Lenguaje FKScript Proceso General FKScript

Proceso General FKScript

por sgoliver

Esta entrada forma parte de una serie de artículos dedicados al proyecto FKScript, construcción de un compilador y una máquina virtual para un lenguaje de script con C# y ANTLR, entre los cuales podrás encontrar una descripción detallada de cada módulo, documentación técnica, ejemplos y tutoriales de uso que pueden ser de tu interés. No olvides consultar la página principal de FKScript para más información.

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:

  1. Análisis léxico-sintáctico.
  2. Análisis semántico.
  3. Generación de código.

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:

  1. Validación del código intermedio, detectando posibles errores.
  2. Conversión de constantes de tipo cadena a referencias a memoria dinámica.
  3. Conversión de etiquetas a referencias al segmento de código.
  4. Generación del fichero binario ejecutable.

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.

Todo este proceso se muestra gráficamente en la siguiente imagen:

Proceso General FKScript

Proceso General FKScript

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. Aceptar Más Información

Política de Privacidad y Cookies