Inicio Programación Compiladores y Máquinas Virtuales

Compiladores y Máquinas Virtuales

por sgoliver

Después de mucho tiempo jugando con las versiones beta de ANTLR v3, con la publicación de su versión definitiva hace tan sólo unos días me decidí a terminar un proyecto personal que tenía entre manos desde hace unos meses. En éste me surgió la necesidad de incorporar algún método que permitiera la ejecución de pequeños scripts para automatizar determinadas tareas. Esta situación resultaba inmejorable para experimentar un poco con herramientas de generación de compiladores y máquinas virtuales, por tanto olvidando una vez más la regla de no reinventar la rueda me propuse construir desde cero todo lo necesario para conseguir la ejecución de scripts en mi proyecto.

Dado que existe aún poca documentación sobre ANTLR 3, y mucho menos en español, voy a publicar aquí a modo de ejemplo todos los pasos necesarios para construir el sistema propuesto. Espero que este material pueda resultar útil para aquellos que se propongan desarrollar un sistema similar. El nuestro estará escrito completamente en C# y estará formado por los siguientes módulos:

  1. Un compilador que transformará el código script a un lenguaje intermedio.
  2. Un ensamblador que generará el fichero binario ejecutable a partir del código intermedio.
  3. Una máquina virtual capaz de ejecutar el fichero generado por el ensamblador.

ANTLR será usado para construir el compilador, que estará formado a su vez por los analizadores léxico y sintáctico, un analizador semántico para la generación y comprobación de tipos, y un generador de código a partir del árbol de sintáxis abstracta (AST) construido durante las fases anteriores. Por su parte, tanto el ensamblador como la máquina virtual se escribirán sin utilizar ninguna herramienta de apoyo, dado que son relativamente sencillos de implementar.

Pretendo escribir todo esto en varias entregas y el planning en principio será el siguiente:

  1. Introducción a ANTLR 3.
  2. Especificación del lenguaje FKScript.
  3. Construcción de los analizadores léxico y sintáctico.
  4. Contrucción del analizador semántico.
  5. Especificación del lenguaje FKIL.
  6. Construcción del generador de código.
  7. Implementación del ensamblador.
  8. Implementación de la máquina virtual.

Espero poder publicar los primeros artículos la semana proxima.

Edito la entrada: Acabo de habilitar una página para reunir la documentación del proyecto.

You may also like

Dejar un comentario

Uso de cookies

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.plugin cookies

ACEPTAR
Aviso de cookies