Procesadores de Lenguaje - UJI - Curso 2009/2010 - Prácticas

Práctica 4: Compilador MINICOMP

Versión 0. Modificaciones a nivel léxico.

  1. Cambia Minicomp para que el símbolo de asignación sea = y que el comparador de igualdad sea ==.

  2. Haz que las palabras reservadas puedan escribirse íntegramente en mayúsculas o minúsculas, pero no en una combinación de cajas. Esto debe suceder también con las palabras reservadas que añadas en versiones posteriores.

  3. Adapta Minicomp para que acepte las siguientes secuencias de escape en los literales de cadena del lenguaje de entrada:

    Secuencia Significado
    \n salto de línea
    \t tabulador
    \" comilla doble
    \\ barra invertida

    A partir de ahora, las cadenas en el lenguaje de entrada seguirán estando delimitadas por un carácter comilla doble a cada lado, y entre ambos:

    1. No se permite el carácter salto de línea, pero se permite la secuencia de escape formada por el carácter barra invertida seguido por el carácter ene.

    2. No se permite el carácter tabulador, pero se permite la secuencia de escape formada por el carácter barra invertida seguido por el carácter te.

    3. Sólo se permite el carácter comilla doble (aparte de los delimitadores inicial y final) si forma parte de una secuencia de escape.

    4. Sólo se permite el carácter barra invertida si forma parte de una de esas cuatro secuencias de escape posibles.

    Al encontrar en la entrada dos caracteres que formen una secuencia de escape, debes sustituirlos por un sólo carácter, aquel que el usuario quiere representar con esa secuencia de escape. En la salida, ese carácter volverá a ser sustituido por su representación en el lenguaje de salida. Como el lenguaje de salida en nuestro caso es Rossi, de ello se encarga el módulo Rossi.py (al que debes añadir un caso que falta; la versión inicial contempla tres de los cuatro cambios necesarios). Si en el futuro quisiéramos traducir a otro lenguaje, o tener un intérprete, bastaría con cambiar la generación de resultados.

    Ten en cuenta que, al programar en Python, debes expresarte siguiendo las reglas de Python. Por ejemplo,

    • c = '\\' asigna a c el carácter barra invertida.
    • c = 'n' asigna a c el carácter ene.
    • c = '\n' asigna a c el carácter salto de línea.
    • c = 't' asigna a c el carácter te.
    • c = '\t' asigna a c el carácter tabulador.
    • c = '"' asigna a c el carácter comilla doble (recuerda que usando en Python las comillas simples como delimitadores no necesitamos escapar las comillas dobles).
Aclaración para estudiantes repetidores: Respecto del curso 2008/2009 hemos añadido los tres apartados de esta versión 0, recuperando algunos de los ejercicios iniciales de cursos anteriores.

Última actualización: 21 de abril de 2010.