Escuela Técnica Superior de Ingenieros Informáticos

Universidad Politécnica de Madrid

Procesadores de Lenguajes

Estás aquí:

Inicio >FAQ

Preguntas Frecuentes

En esta sección se irán colocando las preguntas más frecuentes de la asignatura de Procesadores de Lenguajes junto con sus respuestas.


¿Es Procesadores de Lenguajes una asignatura difícil de aprobar?
No... si se trabaja en ella. En la asignatura se proporcionan diversas ayudas para permitir que se pueda aprobar y, muchas veces, estas ayudas están desaprovechadas por los estudiantes. Para empezar, se imparte la teoría necesaria en clase (aunque la teoría de la asignatura es relativamente escasa) complementada con bastantes ejercicios y casos prácticos, se dispone del sistema de auto-aprendizaje Draco y se plantean pequeños ejercicios en el aula. Así, en los últimos años, los alumnos que asisten mayoritariamente a clase han obtenido una media de 2,2 puntos más que los estudiantes que no asisten frecuentemente y 3,3 puntos más que los que no asisten. Los alumnos que participan activa y frecuentemente en el sistema DRACO obtienen de media 2,7 puntos más que los estudiantes que lo usan esporádicamente y 4,3 puntos más que los que no lo usan. Los alumnos que realizan la mayoría de los ejercicios planteados en clase obtienen de media 2,2 puntos más que aquellos estudiantes que realizan pocos de los ejercicios propuestos y 3,6 puntos más que los que no han hecho ninguno. Combinando asistencia, Draco y ejercicios, con aprovechamiento y un poco de estudio y trabajo constante, se puede aprobar perfectamente la asignatura completa en el semestre (los que participan activamente en las actividades de evaluación progresiva obtienen 3,6 puntos más que los que participan poco y 5,6 puntos más que los que no participan). Además, se recuerda que los profesores de la asignatura están disponibles durante todo el curso en horario de tutorías para resolver cualquier cuestión sobre la teoría o la práctica; por tanto, se recomienda asistir para solventar cualquier duda no solo en las fechas previas a exámenes o entrega de prácticas, sino durante todo el curso.
¿Es la práctica de Procesadores de Lenguajes larga y complicada?
Es una de las prácticas más completas de las realizadas en el Grado, pero no por ello es necesariamente complicada. Es necesario tener buenas habilidades de programación y realizar el diseño siguiendo las pautas que se ven en clase para después implementar el diseño realizado utilizando vuestro lenguaje de programación favorito. Aunque la práctica es larga, si se va diseñando e implementando conforme se van viendo los distintos conceptos en clase, trabajando un poco todas las semanas, la práctica se puede terminar y aprobar con buena nota en el semestre. Hay que tener en cuenta que en clase se ven ejemplos de diseño de prácticamente todo lo que hay que implementar en la práctica. Además, ofrecemos tres clases específicas sobre la práctica con indicaciones y recomendaciones. Finalmente, con Draco se puede comprobar el funcionamiento de las distintas partes de la práctica.
¿No sería mejor empezar a hacer la práctica a final del semestre, cuando ya hayamos estudiado todo el Procesador de Lenguaje y tengamos una visión de conjunto?
Un Procesador de Lenguajes se compone de varios módulos cuyo funcionamiento es distinto, pero que se comunican entre sí. Podría pensarse que esperar al final facilita la creación del Procesador, pero realmente cada módulo se puede diseñar e implementar de manera independiente, simplemente teniendo en cuenta cómo interaccionan entre sí, lo cual se ve detalladamente en clase. Además, al final del semestre tienes otras prácticas y exámenes de otras asignaturas, por lo que si no has hecho el trabajo progresivamente, probablemente no te dé tiempo. Por nuestra experiencia y los datos de los últimos años, hemos comprobado que de los grupos que se han esforzado en las dos primeras entregas parciales y las han aprobado, el 68% aprueban la práctica en enero; de los grupos que han entregado una o las dos entregas parciales aunque sin aprobarlas, el 23% aprueban la práctica en enero; y, finalmente, de los que no hacen ninguna de las dos entregas, solo el 5% de los grupos consiguen aprobar la práctica en enero. Por tanto, recomendamos sin lugar a dudas realizar la práctica desde el principio y esforzarse en realizar unas buenas entregas parciales. Además, esas entregas parciales son revisadas por los profesores, identificando los principales problemas y errores presentes en las memorias. Por otro lado, Draco permite ir comprobando el funcionamiento de los distintos módulos de la práctica y si se realiza progresivamente durante el curso, se podrán obtener muchos más puntos que si se deja para el final.
He pensado dejarme la asignatura para la convocatoria extraordinaria, porque creo que será más fácil aprobar. ¿Lo recomendáis?
En absoluto lo recomendamos. Es más sencillo aprobar en la convocatoria ordinaria y se tienen muchísimas más ayudas. Estamos dando clase todo el semestre, con lo que es más fácil ir estudiando un poco cada semana. Y tenemos un montón de actividades de evaluación progresiva (incluyendo Draco) que te ayudarán a aprender, repasar y revisar tus conocimientos, además de poder obtener hasta dos puntos más en la nota (que se suman a la nota de la práctica y de teoría solo en la convocatoria ordinaria). Para la convocatoria extraordinaria no tendrás las clases ni tendrás la ayuda de Draco (ni para repasar la teoría, ni hacer ejercicios, ni comprobar el funcionamiento de la práctica...) y, además, por nuestra experiencia, sabemos que el semestre par no lo dedicáis a Procesadores de Lenguajes, por lo que es una falacia considerar que vais a dedicar mucho tiempo. Es cierto que hay 5 meses más, pero sabemos que no los aprovecháis e intentáis terminar la práctica a finales de junio y estudiar la asignatura unos días antes del examen, y así es muy difícil aprobar. Y no es porque lo digamos nosotros; lo dicen los números de las estadísticas de los últimos años. Para que te hagas una idea, en la convocatoria extraordinaria, el 83% no aprueban la teoría y el 63% no aprueban la práctica.
¿Puedo crear un grupo de prácticas con compañeros de otros grupos de clase o, incluso, de otras titulaciones?
Sí, no hay problema. En la sección de grupos podéis conformar el grupo como queráis. La asignatura es exactamente igual para todos los Grados en la que se imparte.
¿Qué lenguaje de programación debo utilizar para hacer la práctica?
Podéis utilizar cualquier lenguaje de programación, siempre que después se pueda ejecutar la práctica en los ordenadores de los profesores. No obstante, se recomienda utilizar el lenguaje en el que os sintáis más cómodos programando, para no teneros que enfrentaros con dificultades propias del lenguaje de programación.
¿Puedo usar cualquier herramienta para hacer la práctica?
Sí, no hay restricciones en cuanto a las herramientas, librerías o tecnologías que podáis utilizar para desarrollar la práctica. Pero debéis recordar que el Procesador construido debe analizar el lenguaje que corresponde al grupo de prácticas y generar los ficheros solicitados (tokens, tabla de símbolos y parse) con los formatos indicados en la página de Documentación, no siendo válidos ficheros con otros formatos.
He obtenido un compensable en la práctica en la convocatoria de enero. ¿Puedo entregar la misma práctica para la convocatoria extraordinaria?
Hay que tener en cuenta que la convocatoria extraordinaria es una evaluación distinta y, por tanto, se evaluarán distintos aspectos de la práctica que los evaluados en enero (no hay dos evaluaciones iguales) y, lo más probable, es obtener una nota distinta. Incluso, se podrían detectar nuevos fallos y darse el caso de obtener una nota inferior. Además, hay que tener en cuenta que la calificación en la convocatoria ordinaria de enero se consideran las calificaciones obtenidas en las tres entregas de la práctica, por lo que sería prácticamente imposible que la nota fuera exactamente la misma. De todas formas, si se ha obtenido un compensable, la recomendación es que se solucionen los problemas detectados durante la corrección para optar al aprobado; se dispone de unos 5 meses para hacerlo, aunque se recomienda empezar a solucionarlo a finales de enero para no interferir con las prácticas y exámenes del semestre par.
He obtenido un compensable en la teoría y no he entregado la práctica en enero. ¿Puedo entregar solamente la práctica para la convocatoria extraordinaria?
No, las normas lo explican claramente: solamente se guardan de enero a julio los aprobados, y una nota inferior a 5 no es un aprobado. No tiene sentido guardar suspensos. Puede evitarse esta situación entregando y aprobando la práctica en la convocatoria de enero, pues, de esta forma, se hace media con la teoría y se podría aprobar la asignatura en la convocatoria ordinaria. Si, además, se ha participado activamente en las actividades de evaluación progresiva, será más fácil aún aprobar la asignatura con un compensable en teoría.
En la Práctica del analizador de JS-PdL, cuando se encuentre una variable sin declarar, ¿debe emitirse un error semántico?
No. En este lenguaje, cualquier variable no declarada se considera que es global y entera (tal como se indica en la sección de Declaraciones de la descripción del lenguaje), por lo que no puede producirse un error y deberá insertarse en la Tabla de Símbolos global.
Para la primera entrega de la Práctica, ¿debo gestionar los ámbitos y tener varias Tablas de Símbolos? ¿Debo rellenar, además del lexema, el resto de atributos de la Tabla de Símbolos (como el tipo, el número de parámetros...)?
Para la primera entrega, puesto que aún no tenéis el Analizador Semántico (que es el que crea y destruye las tablas, y marca la zona de declaración, y analiza los tipos), no tenéis que tratar los diferentes ámbitos. Lo que tenéis que hacer es, simplemente, añadir todos los identificadores en una única Tabla de Símbolos comprobando que no estuvieran ya insertados, es decir, cuidando de no duplicarlos. Más adelante retocaréis esta parte para completarla, una vez que tengáis el Analizador Semántico implementado. Por otro lado, el Analizador Léxico solamente puede introducir el lexema de cada identificador; el resto de atributos de la Tabla de Símbolos solamente los puede introducir el Analizador Semántico.
La aplicación VASt me indica que no se puede construir el árbol sintáctico. ¿Está funcionando mal esta herramienta?
La aplicación VASt está muy probada y lleva usándose desde hace más de 10 años y siempre que indica que el árbol no se puede construir es que realmente tu gramática o el parse no son correctos. Normalmente, el problema suele estar en algún error en los números del parse (se ha omitido alguno, se ha generado alguno de más o se ha puesto un número incorrecto), o que la gramática usada en la aplicación no es la misma (o las reglas no tienen la misma numeración) que las utilizadas en el Analizador Sintáctico. Se recomienda empezar a probarlo con programas fuente muy cortos (un par de sentencias) e intentar construir manualmente el árbol siguiendo la gramática y el parse utilizado en VASt; haciéndolo así, se podrá detectar el problema en el parse o en la gramática.
Estoy muy interesado en aprender el funcionamiento completo de un Compilador. Dado que en Procesadores de Lenguajes solamente se estudia la fase de Análisis, ¿dónde puedo estudiar la fase de Síntesis?
La fase de Síntesis se estudia en la asignatura Traductores de Lenguajes, que es una asignatura optativa del sexto semestre del Grado en Ingeniería Informática. En esta asignatura, que es la continuación lógica de Procesadores de Lenguajes, se estudia y se practica cómo traducir un programa fuente a código objeto (ensamblador). Puede parecer complejo, pero si estudias la asignatura podrás comprobar cómo realizar la traducción es una tarea bastante sencilla (más sencillo que la fase de Análisis), al descomponerse la traducción en operaciones básicas que vienen determinadas por la gramática del Analizador Sintáctico. Si te interesa, debes matricularte cuando realices la matrícula de tercero, aunque, si no lo hiciste, también puedes ampliar la matrícula en febrero o la podrías cursar mientras estás en cuarto.