Bienvenido a mi antigua web ;-)

Mi actual página web la puedes encontrar en esta dirección. El mantenimiento de ésta, mi antigua página web lo abandoné hace bastante tiempo ya y su contenido está muy desfasado. Como hay muchas cosas interesantes en estas antiguas páginas he decidido dejarlas en la red.

Me he pasado a una página más sencilla y esta se quedará siempre como está, por lo que ten en cuenta que todo el contenido es antiguo, algunas cosas pueden no ser válidas ya.

Home Como contactar conmigo
Información acerca de quien soy yo
Algunos programas que he hecho y que puedes coger
Sección dedicada a la Universidad Nacional de Educación a Distancia
Sección dedicada al sistema operativo Linux
Colección de links sobre programación
Links diversos














    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.


 Home.gif - .166 KHome Page
Comentarios y sugerencias en la Sección de Correo
Última actualización: