Práctica 4: Compilador MINICOMP
Versión 0. Modificaciones a nivel léxico.
- Cambia Minicomp para que el símbolo de asignación sea =
y que el comparador de igualdad sea ==.
- 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.
- 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:
- 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.
- 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.
- Sólo se permite el carácter comilla doble (aparte de
los delimitadores inicial y final) si forma parte de una
secuencia de escape.
- 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).
- 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.
Última actualización: 21 de abril de 2010.