Mi anagrama

Compiladores y Procesadores de Lenguajes: las asignaturas

Gran parte de los contenidos de estas páginas pueden ser interesantes para las personas que estudian esta materia (y en particular, mis alumnos).

 


En esta página

Últimas noticias

Datos de las asignaturas

Lista de distribución eside-compiladores

Historia

Una implementación del algoritmo LR(1) en Java

Subpáginas

Herramientas de compilación

Especificación de la máquina UDMC02


Índice general

Principal

Noticias

Direcciones

Detalles (así se hizo)

Asignaturas

Compiladores/Procesadores de Lenguajes

TALF/CyC

Programación en C

Metodología de la programación

Investigación

DELi

LinguaMedia

MoreLab (en DeustoTech)

Linked Data Spain

TIMM

Red Española de e-Ciencia

SEPLN

JENUI 2006

AENUI

EAPLS

EPI (Euskarazko Programazio Ingurunea)

Otros mundos

Fotos

Música

Otros mundos más lejanos

RDF Resource Description Framework Icon (for humans)

icono de twitter icono de flickr

Sección Sindical de CCOO de la Universidad de Deusto (UD Bilbao)

Campañas

Plataforma Víctimas ALVIA 04155

stopsoftwarepatents.eu petition banner

Plataforma cidadá Nunca Máis

 

Últimas noticias

En este primer apartado se recogen informaciones que pueden ser importantes durante el desarrollo de las asignaturas de Compiladores o, más recientemente, Procesadores de Lenguajes.

[2015-02-15]

Procesadores de Lenguajes: versión 1.3 de la máquina de pila UDMPs99

Hemos preparado una nueva versión, la 1.3, del intérprete de máquina de pila UDMPs99. Se sigue distribuyendo con la GPL3, desde luego. No hay cambios radicales, así que todos los programas de máquina de pila correctos que funcionasen hasta ahora deberían ejecutarse exactamente igual:

En la distribución de esta versión, solo se aporta el ejecutable precompilado para GNU/Linux32, pero se supone que puede compilarse para otras plataformas, tanto de 32 como de 64 bits.

Puedes descargar la distribución de la versión 1.3ß 20150215:

udmps99_20150215.zip

que contiene el código fuente, el ejecutable precompilado para GNU/Linux32, ejemplos de prueba, la documentación (referencia de la máquina de pila UDMPs99) y el archivo README, donde aparecen instrucciones adicionales para la reconstrucción en estos u otros sistemas y máquinas.

Como dicen los anteriores documentos, y no es una frase hecha, este trabajo no hubiera sido posible, ni en su momento ni ahora que se ha re-elaborado, sin la ayuda de un numeroso grupo de estudiantes, cuyos nombres incluimos aquí también como sincero agradecimiento: Jesús Redrado, Jorge García, Ana Cabana, Sergio Argüello, David Vázquez, Igor Ruiz, David Ausín, Endika Gutiérrez, Luis Rodríguez. A todos ellos, muchas gracias.

[2011-03-18]

Compiladores II: distribución multiplataforma y libre de la máquina de pila UDMPs99

Hemos conseguido preparar algo que ya debimos realizar hace bastantes años, pero lo vas dejando, lo vas dejando... Tenemos una versión de software libre (GPL) del intérprete de máquina de pila UDMPs99 que definimos Andoni Eguíluz y yo hace la friolera de... bueno, ¿para qué entrar en detalles? Aviso de que todavía tiene varios errores constatados, pero en teoría no deberían surgir esos errores con los programas sencillos que hay que probar en las actuales actividades prácticas de Compiladores II. A cambio, creemos que compila (es C++) y funciona perfectamente tanto en GNU/Linux como en versiones modernas de MS-Windows, incluyendo 64 bits.

Puedes descargar la distribución de la versión 1.1ß 20110318:

udmps99_20110322.zip

que contiene el código fuente, ejecutables precompilados para Win32, Win64 y GNU/Linux32, ejemplos de prueba, la documentación (referencia de la máquina de pila UDMPs99) y el archivo README, donde aparecen instrucciones adicionales para la reconstrucción en estos u otros sistemas y máquinas.

Como dicen los anteriores documentos, y no es una frase hecha, este trabajo no hubiera sido posible, ni en su momento ni ahora que se ha re-elaborado, sin la ayuda de un numeroso grupo de estudiantes, cuyos nombres incluimos aquí también como sincero agradecimiento: Jesús Redrado, Jorge García, Ana Cabana, Sergio Argüello, David Vázquez, Igor Ruiz, David Ausín, Endika Gutiérrez, Luis Rodríguez. A todos ellos, muchas gracias.

[2006-02-21]

Compiladores II: anexos para el capítulo 2 (máquina de pila)

Se han preparado dos anexos impresos y un gran conjunto de programas en lenguaje C (usando en particular flex) como material adicional al capítulo 2 (generación de código intermedio) de Compiladores II.

Si eres estudiante de esta asignatura, creo que será conveniente que les eches un vistazo, porque aparte del mero hecho de ver en vivo el funcionamiento de un pequeño compilador, este curso 2005-2006 la solución del problema de máquina de pila se hará en lenguaje C (en lugar del tradicional Pascal), siguiendo la estructura marcada por estos programas que proporciono.

Los programas se han desarrollado con ayuda de DJGPP, la distribución para Win32 del sistema de desarrollo de GNU (se usan flex y gcc primordialmente). De nuevo, en la página de herramientas tienes indicaciones sobre esta distribución, sobre GNU, etc.

[2003-03-14]

Compiladores II: anexos para el capítulo 8

Se han preparado dos anexos como documentación adicional al capítulo 8 (último) de Compiladores II. El primero no tiene mayor relevancia, simplemente muestra la manera en que genera código un conocido entorno de desarrollo de C/C++, lo que permite comprobar las ideas que se ven en clase.

Por contra, el segundo anexo, titulado Especificación de la máquina UDMC02, es muy importante para ese capítulo 8, porque recoge una definición formal del código máquina que hasta ahora se venía usando en clase. Ese código no es el que aparece originalmente en los apuntes, y además, al formalizar su definición en ese documento, se han hecho ligeros cambios a lo que se venía utilizando en la asignatura los últimos años.

Por esa razón, resulta totalmente necesario que dispongas de él, porque será ese código el que se use en clase, y por supuesto, en el ejercicio correspondiente del examen. Si conoces a algún alumno de la asignatura que no acuda habitualmente a clase por ser repetidor u otra razón, le harás un favor si le avisas de este tema.

Los dos anexos se han dejado ya en formato impreso en el Servicio de Fotocopias de la Universidad. En el caso del segundo, por su importancia, he preparado una versión online del mismo:

Especificación de la máquina UDMC02

Atención: he intentado seguir los estándares actuales de marcado y hojas de estilo en la medida de lo posible. La presentación de este documento con el navegador Mozilla 1.3a considero que es buena. Sin embargo, he probado otros navegadores (Explorer 6sp1, Opera no sé que versión), y existen fallos en la presentación, leves algunos, pero bastante graves en otros casos, que pueden llegar a desvirtuar enormemente el contenido. Por lo tanto, te recomiendo encarecidamente que acudas a la versión impresa, y utilices esta como apoyo, en todo caso. Mientras tanto, lo vuelvo a repetir: los navegadores no estándar, a la porra.

[2002-11-15]

Datos de las asignaturas

La materia de compiladores se divide en dos asignaturas (4,5 créditos cada una) de 4º curso de la Ingeniería Informática, llamadas Compiladores I (página oficial) y Compiladores II (página oficial).

Herramientas

Las herramientas de generación de compiladores son de enorme utilidad, no solo para el desarrollo de compiladores, sino para resolver fácilmente otros problemas. En cualquier caso, son de obligado conocimiento en las asignaturas de compiladores. Se proporcionan en esta otra página.

[1998-12-01]

Lista de distribución eside-compiladores

El día 7 de octubre de 1997 Andoni y yo comenzamos el funcionamiento de una rudimentaria lista de distribución para la asignatura de Compiladores I. En febrero de 1998 se puso a punto el servidor de listas majordomo, con lo que el comportamiento a partir de esa fecha es el habitual para las listas de distribución.

Direcciones de correo asociadas a la lista

El aspecto más importante a tener presente para empezar a trabajar con el sistema de distribución es la existencia de dos direcciones de correo, que no deben confundirse:

Suscripción

Para la suscripción, envía un mensaje a majordomo@deusto.es, con un asunto cualquiera y el siguiente cuerpo:

subscribe eside-compiladores tu-email
-

tu-email será la dirección de correo electrónico donde quieras recibir los mensajes de la lista). Se recomienda no escribir nada más en el cuerpo del mensaje (concretamente evita la firma) para que majordomo no se vuelva loco. Esto se puede conseguir colocando un guión en una línea nueva, como se ve arriba: majordomo no leerá a partir de ahí, haya lo que haya.

Muy poco después deberías recibir algún mensaje (normalmente dos) pidiendo confirmación para la suscripción: sigue atentamente las indicaciones de dichos mensajes. Cuando se haya aceptado la suscripción, te llegarán otros (normalmente dos) mensajes: es conveniente que guardes estos mensajes, pues contienen alguna información sobre el funcionamiento de la lista que puede ser de interés.

Cancelación

Si no te gusta la lista, puedes cancelar la suscripción, enviando un mensaje a majordomo@deusto.es, con asunto cualquiera y el cuerpo:

unsubscribe eside-compiladores
-

Recuerda el guión para que no se procese el resto del mensaje. Ten en cuenta que la lista se cerrará automáticamente el 30 de septiembre de cada año (más o menos), por lo que no es estrictamente necesario que canceles la suscripción, salvo si tienes claro durante el curso que no te interesa para nada.

Otras operaciones

El sistema majordomo acepta una serie de comandos, además de los anteriores, para diversas operaciones; escribe un mensaje como los descritos, con el cuerpo:

help
-

para conocerlos (lo cual es muy recomendable).

Propósito de la lista

Se pretende que los mensajes abarquen los siguientes aspectos, siempre con un criterio fundamental, como es que resulten de interés para la asignatura, en particular, y para los compiladores y los lenguajes de programación, en general:

Participación en la lista

Para participar en la lista, envía tu mensaje a la dirección de la lista: eside-compiladores@deusto.es. No olvides colocar un asunto que sea aclaratorio del contenido. Si respondes a otro mensaje, coloca Re: delante del asunto original, comprueba la dirección a la que mandas la respuesta (la misma que arriba), y procura mantener a la manera habitual la identificación (ver más abajo) y el texto del participante a quien respondes, pero solo la parte estrictamente necesaria para que se comprenda tu respuesta, no todo el mensaje. Procura que el formato de salida de los mensajes sea el más simple posible (o sea, preferiría que no mandases HTML).

Si hay problemas

Si tienes cualquier problema con la lista, no escribas a la dirección de participación, sino al propietario de la misma (que de momento soy yo, pero algún día puede cambiar), a través de la dirección owner-eside-compiladores@x500.deusto.es. Para cualquier otro asunto, usa mi dirección personal (está al final de la página).

[2002-11-15]

Historia

Licenciado en informática

Empecé a dar esta asignatura en enero de 1987. Entonces era una asignatura anual de 3 horas a la semana. Como no se veían antes en la carrera ni autómatas ni gramáticas, la primera parte de la asignatura era esto, y de compiladores propiamente solo se llegaba a ver análisis léxico y sintáctico (además en 5º se acababan las clases un mes antes). Esto duró así unos años, hasta que en 1989 empecé a dar Teoría de autómatas y lenguajes formales en 3º, con lo cual, en el curso 1991-1992, ya se pudo dar la materia de compiladores con un poco más de sentido.

Andoni Eguíluz entró a dar clase de la asignatura en 1994, y desarrolló (basándose en mis notas, pero añadiendo una gran cantidad de nuevo material), los apuntes que todavía se utilizan. Realmente, ese año dio clase solo él, mientras que los dos siguientes dimos juntos. Como fruto de esa colaboración, surgió una herramienta llamada GeLLCo (ver esta otra página), que tenía grandes expectativas, pero no llegó a cuajar.

El último año que se dió clase oficial de la asignatura en esta carrera de licenciado fue 1996-1997, aunque creo recordar que todavía dí clases especiales para repetidores el año siguiente. La asignatura terminó definitivamente de existir el curso 1999-2000.

Ingeniero informático (I)

El curso 1993-1994 empezó en 1º la nueva titulación de ingeniero informático. Era la carrera completa (primer y segundo ciclo), no como ahora. En el curso 1996-1997 llegaron a 4º curso. La materia de compiladores se dividió en dos asignaturas, tal como está ahora. La de Compiladores I la he dado yo desde entonces, mientras que Compiladores II la dio entera Andoni el primer año, la dimos a medias el segundo año (1997-1998), y la ha dado yo solo desde entonces (Andoni siempre se lamenta mucho de haber dejado de dar clase de esta asignatura, por lo mucho que le gustaba).

La materia en sí no cambió nada respecto a lo que se daba en la licenciatura desde que entró Andoni, pero añadimos un montón de experimentos docentes. Por ejemplo, Andoni fue el primero (en 1997) en crear una lista de distribución por correo electrónico para la asignatura, y yo le seguí al año siguiente (y eso sin la ayuda de majordomo, o sea, reenviábamos nosotros mismos los mensajes, imagínate). Hay información sobre la lista actual en este apartado.

Pero la experiencia más importante que ha habido nunca en las asignaturas fueron las prácticas que se hicieron en Compiladores II los cursos 1997-1998 y 1998-1999. La verdad es que si no fuera por la insistencia de Andoni, yo creo que no me hubiera metido en ese berenjenal, pero la experiencia fue, por lo menos para mí, muy positiva, aunque también es verdad que exigió un esfuerzo que, en estos momentos, no creo que vuelva a repetir si no hay antes un cambio en la infraestructura de apoyo. De todas las maneras, puedes consultar información sobre el tema en este apartado.

Ingeniero informático (II)

Aunque estrictamente el plan de estudios no cambiaba, el curso 1999-2000 supuso otra "reforma" en la materia de compiladores, ya que ese año llegaron a 4º los estudiantes que, en lugar de hacer el primer ciclo de la titulación de ingeniero informático, habían cursado ingeniero técnico en informática de gestión. Debido a que (lo que son las cosas) en esta nueva estructura de los estudios, no se enseña la teoría de autómatas y lenguajes formales, ha habido que volver casi a lo que pasaba en la licenciatura, dedicando parte de la asignatura Compiladores I a ver lo mínimo de esa materia. Y ahí andamos.

[1997]

Una implementación del algoritmo LR(1) en Java

José Luis Díez Fernández, distinguido alumno de la asignatura en el curso 1996-97, ha realizado un programa Java que aplica la técnica LR(1) a una gramática para obtener las tablas del analizador sintáctico ascendente. Puedes usar dicho programa si sigues el enlace de abajo, pero, claro, tu gozo estará en un pozo si tu navegador no tiene Java.

LR(1) en Java

Mi anagrama peque


Mi anagrama peque

Copyright © 1996-2003 JosuKa Díaz Labrador

Facultad de Ingeniería, Universidad de Deusto, Bilbao, España

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Última modificación: 2003-03-14. Accesos al sitio: 557844

Valid XHTML 1.1! Valid CSS!