Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia de la Clase PARSERO

#include <parsero.h>

Diagrama de colaboración para PARSERO:

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 PARSERO ()
 ~PARSERO ()
BOOLEAN init (char *nombre_archivo)
int siguiente_segmento (LISTA< char * > **LIneas)
 Este metodo encapsula la funcionalidad de un preprocesador semantico PARSERO.


Métodos privados

BOOLEAN preprocese_linea (char *linea)
 Recibe una linea y tiene en cuenta el estado actual del analisis sintactico para hacer lo siguiente: - Determinar si la linea es relevante: retorna TRUE si lo es, y FALSE sino (i.e.

char * procese_linea (char *linea)
 Lleva la cuenta del nivel de anidamiento de bloques "{...}".

void colapse_espacios (char *linea)
BOOLEAN leer_linea (void)

Atributos privados

int index_fd
LISTA< FILE * > fds
int nivel_comentario
int nivel_bloque
BOOLEAN primer_pasada
char * Remanente

Documentación del constructor y destructor

PARSERO::PARSERO  ) 
 

Definición en la línea 110 del archivo parsero.C.

References index_fd, nivel_bloque, nivel_comentario, primer_pasada, y Remanente.

PARSERO::~PARSERO  ) 
 

Definición en la línea 119 del archivo parsero.C.

References LISTA< FILE * >::elim(), fds, Remanente, y LISTA< FILE * >::tam().

Here is the call graph for this function:


Documentación de las funciones miembro

void PARSERO::colapse_espacios char *  linea  )  [private]
 

Definición en la línea 183 del archivo parsero.C.

Referenciado por preprocese_linea().

BOOLEAN PARSERO::init char *  nombre_archivo  ) 
 

Definición en la línea 164 del archivo parsero.C.

References LISTA< FILE * >::anx(), y fds.

Referenciado por JED_INTERFACE::leer_gui(), y leer_materiales().

Here is the call graph for this function:

BOOLEAN PARSERO::leer_linea void   )  [private]
 

Definición en la línea 131 del archivo parsero.C.

References LISTA< FILE * >::anx(), des_punte(), LISTA< FILE * >::elimElem(), fds, index_fd, LISTA< FILE * >::tam(), y THE_buffer.

Referenciado por siguiente_segmento().

Here is the call graph for this function:

BOOLEAN PARSERO::preprocese_linea char *  linea  )  [private]
 

Recibe una linea y tiene en cuenta el estado actual del analisis sintactico para hacer lo siguiente: - Determinar si la linea es relevante: retorna TRUE si lo es, y FALSE sino (i.e.

una linea de un comentario o una vacia es una linea irrelevante)

  • Si la linea es relevante, la modifica, dejando en ella solo lo que no esta dentro de comentarios.

Definición en la línea 204 del archivo parsero.C.

References BOOLEAN, colapse_espacios(), y nivel_comentario.

Referenciado por siguiente_segmento().

Here is the call graph for this function:

char * PARSERO::procese_linea char *  linea  )  [private]
 

Lleva la cuenta del nivel de anidamiento de bloques "{...}".

Definición en la línea 277 del archivo parsero.C.

References inserte_espacios(), nivel_bloque, y primer_pasada.

Referenciado por siguiente_segmento().

Here is the call graph for this function:

int PARSERO::siguiente_segmento LISTA< char * > **  LIneas  ) 
 

Este metodo encapsula la funcionalidad de un preprocesador semantico PARSERO.

El PARSERO esta disennado para "comerse" archivos de texto ASCII que estan escritos de una manera "similar a C/C++", es decir, que tienen comentarios marcados con "/ * y * /" y "//", y que tienen un caracter especial demarcador de linea multiple "\".

Las lineas en blanco se eliminan, al igual que todos los segmentos que esten dentro de algun comentario. Los demas tokens se dejan intactos y se retornan como una lista de cadenas de caracteres (i.e. lista de renglones) en la variable `LIneas`.

Por otro lado, las lineas del archivo no se retornan todas de una sola vez, sino que se van enviando por "bloques". Un bloque termina con un caracter "}". El preprocesador sintactico tiene en cuenta bloques anidados y solo particiona el reporte de bloques para los bloques del nivel principal.

Retorna: -1 si algo sale mal 0 si ya acabo 1 si vamos bien

BUGS: Este parsero no ha sido derivado formalmente, y ni siquiera se ha tomado la molestia de definir una gramatica! Por lo tanto, este codigo es "bug-prone" (propenso a errores). Bueno, pues se recomienda definir una gramatica formalmente y re-escribir este parsero usando alguna herramienta tipo LEX, BISON o YACC... pero debe conservarse el comportamiento y el disenno de esta clase y de la clase TOKENIZADOR.

Definición en la línea 319 del archivo parsero.C.

References LISTA< T >::anx(), LISTA< T >::elim(), fds, leer_linea(), nivel_bloque, preprocese_linea(), primer_pasada, procese_linea(), Remanente, LISTA< T >::tam(), LISTA< FILE * >::tam(), y THE_buffer.

Referenciado por JED_INTERFACE::leer_gui(), y leer_materiales().

Here is the call graph for this function:


Documentación de los datos miembro

LISTA<FILE *> PARSERO::fds [private]
 

Definición en la línea 34 del archivo parsero.h.

Referenciado por init(), leer_linea(), siguiente_segmento(), y ~PARSERO().

int PARSERO::index_fd [private]
 

Definición en la línea 33 del archivo parsero.h.

Referenciado por leer_linea(), y PARSERO().

int PARSERO::nivel_bloque [private]
 

Definición en la línea 36 del archivo parsero.h.

Referenciado por PARSERO(), procese_linea(), y siguiente_segmento().

int PARSERO::nivel_comentario [private]
 

Definición en la línea 35 del archivo parsero.h.

Referenciado por PARSERO(), y preprocese_linea().

BOOLEAN PARSERO::primer_pasada [private]
 

Definición en la línea 37 del archivo parsero.h.

Referenciado por PARSERO(), procese_linea(), y siguiente_segmento().

char* PARSERO::Remanente [private]
 

Definición en la línea 38 del archivo parsero.h.

Referenciado por PARSERO(), siguiente_segmento(), y ~PARSERO().


La documentación para esta clase fué generada a partir de los siguientes archivos:
Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.