00001 //=========================================================================== 00002 //= parsero.h Julio de 1998 = 00003 //=-------------------------------------------------------------------------= 00004 //= Analizador sintactico de proposito general en el alcance del proyecto = 00005 //=-------------------------------------------------------------------------= 00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00013 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00014 //=-------------------------------------------------------------------------= 00015 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00016 //= 1997 - 2003, oscarchavarro@hotmail.com = 00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00020 //=========================================================================== 00021 00022 #ifndef __PARSERO__ 00023 #define __PARSERO__ 00024 00025 #include "jed_defs.h" // Incluir antes que nada, en ese modulo se definen 00026 // aspectos importantes para la portabilidad del sistema 00027 00028 #include <stdio.h> 00029 #include "lista.h" 00030 00031 class PARSERO { 00032 private: 00033 int index_fd; 00034 LISTA<FILE *> fds; 00035 int nivel_comentario; 00036 int nivel_bloque; 00037 BOOLEAN primer_pasada; 00038 char *Remanente; 00039 00040 BOOLEAN preprocese_linea(char *linea); 00041 char * procese_linea(char *linea); 00042 void colapse_espacios(char *linea); 00043 BOOLEAN leer_linea(void); 00044 public: 00045 PARSERO(); 00046 ~PARSERO(); 00047 BOOLEAN init(char *nombre_archivo); 00048 int siguiente_segmento(LISTA<char*> **LIneas); 00049 }; 00050 00051 enum ENUM_TIPOS_DE_TOKEN { 00052 TK_DESCONOCIDO = 0, 00053 TK_IDENTIFICADOR, 00054 TK_CADENA, 00055 TK_NUMERO, 00056 TK_VECTOR_INICIO, 00057 TK_VECTOR_FIN, 00058 TK_ABRIR, 00059 TK_CERRAR, 00060 TK_ERROR_SINTACTICO, 00061 TK_FIN 00062 }; 00063 00064 class TOKENIZADOR 00065 { 00066 private: 00067 char separadores[10]; 00068 LISTA<char *> *Lineas; 00069 BOOLEAN empiezo_con_cadena(char *cad); 00070 public: 00071 TOKENIZADOR(); 00072 void cambiar_lista(LISTA<char *> *lst); 00073 int siguiente_token(char *cad); 00074 }; 00075 00076 extern void des_comille(char *cad); 00077 extern void simplifique_real(char *cad); 00078 00079 #endif // __PARSERO__ 00080 00081 //=========================================================================== 00082 //= EOF = 00083 //=========================================================================== 00084