Summary: | En este documento se realiza un estudio de las principales técnicas de especificación semántica de lenguajes de programación y se propone una nueva técnica. En la realización del estudio se ha realizado la especificación de un mismo lenguaje de programación en cada una de las técnicas y se han valorado las siguientes características de cada técnica: no ambigüedad, modularidad semántica, componentes semánticos reutilizables, facilidades de demostración de propiedades, posibilidad de desarrollo de prototipos, legibilidad, flexibilidad ante diferentes paradigmas y experiencia en especificación de lenguajes reales. La técnica propuesta es una combinación de la sem℗þantica monádica modular y de los avances desarrollados en el campo de la programación genérica. Las ventajas de la nueva técnica son la modularidad semántica, componentes semánticos reutilizables, la obtención de prototipos de forma automática y la demostrabilidad de propiedades. Para la obtención de prototipos ejecutables se ha implementado un Sistema de prototipado de lenguajes. El sistema contiene un metalenguaje de descripciones semánticas y permite chequear y ejecutar los lenguajes especificados. El sistema se ha implementado como un lenguaje de dominio específico empotrado en Haskell, un lenguaje de propósito general puramente funcional. Con el fin de demostrar la flexibilidad de la técnica propuesta, se han desarrollado las especificaciones de cuatro ejemplos de lenguajes siguiendo los paradigmas de programación lógica, funcional, imperativa y Orientada a Objetos. Adem℗þas, todas las especificaciones se han desarrollado de forma modular, reutilizando y combinando bloques comunes.
|