





 |

Esta es la práctica que he realizado para la asignatura de Compiladores durante el curso 96/97. Lo que sigue es un resumen del enunciado de la práctica. Abajo tienes lo que yo he entregado.
Objetivos
- Diseño de una gramática para un lenguaje de programación sencillo.
- Implementación de un programa que reconozca el léxico de un lenguaje, utilizando la herramienta lex.
- Implementación de un compilador para el lenguaje utilizando las herramientas lexy yacc.
El lenguaje CALCULATOR
Este es un lenguaje de programación que sirve fundamentalmente para realizar operaciones matemáticas. Este es un ejemplo de un programa en lenguaje CALCULATOR:
PROGRAMA OPERACION;
VARIABLES
A, B, C, D, E, F; // SON TODAS ENTERAS
// UN PROCEDIMIENTO AUXILIAR
CALCULO DENOMINADOR;
E = C + D;
FIN;
// PROGRAMA PRINCIPAL
INICIO
A=10;
C=5;
ENTRADA B;
D=0;
E=20;
DENOMINADOR; // MODIFICA EL VALOR DE E
SI-OCURRE E<A +2
ENTONCES-HACER F= (A+B)/E;
SALIDA F;
FIN;
Qué hay que hacer en la práctica
- Definir una gramática recursiva por la izquierda para el lenguaje CALCULATOR. La descripción detallada del lenguaje está en el enunciado de la práctica, pero que por no copiarlo todo no la incluyo aquí.
- Un programa que realize el anális léxico de programas en lenguaje CALCULATOR. La salida debe ser un texto identificativo de los tokens que se van encontrando. Para ello se utilizará la herramienta lexx.
- Un programa que traduzca un programa en lenguaje CALCULATOR a un lenguaje de alto nivel de uso general como Pascal o C.
Herramientas que he utilizado
La práctica se podía realizar con versiones de lex y yacc para Turbo Pascal bajo MsDos, software que fue enviado con el enunciado de la práctica. También se admitía el realizarla con las herramientas lex y yacc propias de Unix. Esta última es la opción que yo he elegido, de manera que la práctica usa estas dos herramientas para generar el código C del traductor, y una vez compilado, este último genera código C a partir de un programa en lenguaje Calculator.
El software usado está formado por las herramientas flex y yacc incluidas en la distribución de Linux Red Hat 4.1. Para la documentación se ha usado lyx junto con LaTEX también bajo el mismo entorno.
Solución de la práctica
- Documentación. Descripción de la práctica tal como se especifica en el enunciado.
- Ficheros. Agrupados en un fichero en formato tgz (tar y gzip), tienes todos los ficheros que forman parte de la práctica. Se incluye un fichero makefile para facilitar la compilación de todos los ficheros que forman parte del proyecto.
|