Ingeniero

Páginas: 3 (690 palabras) Publicado: 17 de marzo de 2013
Pruebas para el Analizador Léxico
Queremos separar/aislar las diferentes fases del compilador en diferentes módulos.

Módulo PL::Error

Para ello comenzamos creando un módulo conteniendo lasrutinas de tratamiento de errores:

lhp@nereida:~/Lperl/src/topdown/PL0506/03lexico/PL-Tutu/lib/PL$ pwd
/home/lhp/Lperl/src/topdown/PL0506/03lexico/PL-Tutu/lib/PLlhp@nereida:~/Lperl/src/topdown/PL0506/03lexico/PL-Tutu/lib/PL$ cat -n Error.pm
1 package Error;
2 use strict;
3 use warnings;
4 use Carp;
5
6 require Exporter;
7
8 our @ISA = qw(Exporter);
9our @EXPORT = qw( error fatal);
10 our $VERSION = '0.01';
11
12 sub error {
13 my $msg = join " ", @_;
14 if (!$PL::Tutu::errorflag) {
15 carp("Error: $msg\n");
16$PL::Tutu::errorflag = 1;
17 }
18 }
19
20 sub fatal {
21 my $msg = join " ", @_;
22 croak("Error: $msg\n");
23 }

Observa como accedemos a la variable errorflagdel paquete PL::Tutu. Para usar este módulo desde PL::Tutu, tenemos que declarar su uso:

lhp@nereida:~/Lperl/src/topdown/PL0506/03lexico/PL-Tutu/lib/PL$ cat -n Tutu.pm | head -8
1 packagePL::Tutu;
2
3 use 5.008004;
4 use strict;
5 use warnings;
6 use IO::File;
7 use Carp;
8 use PL::Error;

En la línea 8 hacemos use PL::Error y no use Errorya que el módulo lo hemos puesto en el directorio PL. No olvides hacer make manifest para actualizar el fichero MANIFEST.

Módulo PL::Lexical::Analysis

Supongamos que además de modularizar elgrupo de rutinas de tratamiento de errores queremos hacer lo mismo con la parte del análisis léxico. Parece lógico que el fichero lo pongamos en un subdirectorio de PL/ por lo que cambiamos el nombredel módulo a PL::Lexical::Analysis quedando la jerarquía de ficheros asi:

lhp@nereida:~/Lperl/src/topdown/PL0506/03lexico/PL-Tutu/lib/PL$ tree
.
|-- Error.pm
|-- Lexical
| `-- Analysis.pm...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero
  • Ingeniero

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS