next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Mas Pruebas y Sup: Haciendo mas Modular el Ant: Versiones anteriores a la Err: Si hallas una errata ...


Práctica: Pruebas en el Análisis Léxico

Extienda su compilador para modularizar el analizador léxico tal y como se explicó en la sección 11.4.
  1. Incluya la estrategia de pruebas de no regresión explicada en esa sección.
  2. Incluya pruebas para las extensiones realizadas: comentarios, cadenas y números en punto flotante.
  3. Extienda los tests con una prueba en la que la entrada contenga un carácter ilegal. Obsérve que, tal y como esta escrito la rutina scanner, si la entrada tiene un carácter ilegal se ejecutarán las líneas
    26     elsif (/\G\s*(.)/gc) {
    27       Error::fatal "Caracter invalido: $1\n";
    28     }
    
    lo que causa la parada del programa de prueba, al ejecutarse fatal el cuál llama a croak.
      sub fatal {
        my $msg = join " ", @_;
        croak("Error: $msg\n");
      }
    
    El objetivo es lograr que el programa de pruebas continúe ejecutando las subsiguientes pruebas.

    Para ello utilice eval y la variable especial $@ para controlar que el programa .t no termine prematuramente. Repase la sección 3.10.3, el capítulo 6.16 y mas específicamente la sección 6.16.7 del capítulo sobre construcción de módulos. Además lea el capítulo Test Now, test Forever '' del libro de Scott [12].


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Mas Pruebas y Sup: Haciendo mas Modular el Ant: Versiones anteriores a la Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21