SlideShare una empresa de Scribd logo
1 de 2
Descargar para leer sin conexión
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#define TAM_BUFFER 100
/* run this program using the console pauser or add your own getch, system("pause")
or input loop */
using namespace std;
class Lexico
{
char *nombreFichero; //NOmbre del fichero fuente
FILE* entrada; //Fichero de entrada
int n1; //Numero de linea
int traza; //control de traza
char buffer[TAM_BUFFER]; //Buffer auxiliar de caracteres
int pBuffer; // Posicion en el buffer
public:
Lexico(char *unNombreFichero, int una_traza=0);
~Lexico(void);
char siguienteToken(void);
void devuelveToken(char token);
int lineaActual(void){return n1;};
int existeTraza(void){if(traza) return 1; else return 0;};
};
Lexico::Lexico(char *unNombreFichero, int una_traza)
{
entrada= fopen(unNombreFichero, "r+");
if((entrada==NULL))
{
cout<<"No se puede abrir el archivo"<<endl;
system("pause");
exit(-2);
}
if(una_traza) traza=1;
else traza =0;
n1=1; // se inicializa el contador de línea
pBuffer=0;//Se inicializa la posicion del buffer
}
Lexico::~Lexico()
{
fclose(entrada);
}
char Lexico::siguienteToken(void)
{
char car;
while((car=((pBuffer>0)? buffer[--pBuffer]:getc(entrada)))!=EOF)
{
if(car==' ') continue;
if(car=='n'){++n1; continue;}
break;
}
if(traza) cout<<"ANALIZADOR LEXICO: Lee el token "<<car<<endl;
switch(car)
{
case'M': // Palabra reservada
case'R':
case'W':
case'=': //asigancion
case'(': //parentesis
case')':
case';'://separadores
case'}'://separadores
case'{':
case'.'://fin de programa
case'+':
case'*':
case'-':
case'/':
case'%':
return(car);
}
if(islower(car)) return(car);//variable
else if (isdigit(car)) return(car);//constante
else
{
cout<<"Error Lexico: Token Desconocido "<<endl;
system("pause");
exit(-4);
}
return(car);
}
void Lexico::devuelveToken(char token)
{
if(pBuffer>TAM_BUFFER)
{
cout<<"Error: Desbordamiento del buffer del analizador lexico "<<endl;
system("pause");
exit(-5);
}
else
{
buffer[pBuffer++]=token;
if(existeTraza())
cout<<"ANALIZADOR LEXICO: Recibe en buffer el token "<<token<<endl;
system("pause");
}
}
int main(int argc, char** argv)
{
int traza;
char token;
Lexico obj("prueba1.txt",1);
if(obj.existeTraza())
cout<<"INICIO DE ANALISIS"<<endl;
while((token=obj.siguienteToken())!='}')
cout<<token<<endl;
system("pause");
return 0;
}

Más contenido relacionado

La actualidad más candente

Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico maryr_
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosEmmanuel Fortuna
 
Modelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativosModelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativosLuis Dario Gomez
 
Tipos de Autómatas 
Tipos de Autómatas Tipos de Autómatas 
Tipos de Autómatas yelizabeth_20
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesIsrael Castillo Cruz
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibridagabo
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalizaciónMarcelo Herrera
 

La actualidad más candente (20)

Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Gramáticas formales
Gramáticas formales Gramáticas formales
Gramáticas formales
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Modelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativosModelo de 5 estados para sistemas operativos
Modelo de 5 estados para sistemas operativos
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo MinilenguajeCompiladores, Analisis Lexico, Ejemplo Minilenguaje
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
 
Decompilador y metacompilador
Decompilador y metacompiladorDecompilador y metacompilador
Decompilador y metacompilador
 
Tipos de Autómatas 
Tipos de Autómatas Tipos de Autómatas 
Tipos de Autómatas 
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
 
Autómata de Pila
Autómata de Pila Autómata de Pila
Autómata de Pila
 

Similar a Analizador Léxico en C++

Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1martha leon
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimomartha leon
 
Informe minishell
Informe minishellInforme minishell
Informe minishellAlex Pin
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Clase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbClase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbInfomania pro
 
Clase de los nodos de la pila
Clase de los nodos de la pilaClase de los nodos de la pila
Clase de los nodos de la pilajbersosa
 
5... reglas de produccion
5... reglas de produccion5... reglas de produccion
5... reglas de produccionJacqui Venegas
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 

Similar a Analizador Léxico en C++ (20)

Ficheros C++
Ficheros C++Ficheros C++
Ficheros C++
 
propuesta
propuesta propuesta
propuesta
 
Prog
ProgProg
Prog
 
Alfabeto
AlfabetoAlfabeto
Alfabeto
 
Unidad16 Codigof1
Unidad16 Codigof1Unidad16 Codigof1
Unidad16 Codigof1
 
Ejemplos Importantisimo
Ejemplos  ImportantisimoEjemplos  Importantisimo
Ejemplos Importantisimo
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
 
Union y concatenacion
Union y concatenacionUnion y concatenacion
Union y concatenacion
 
Practica 5
Practica 5Practica 5
Practica 5
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Codigos de programas
Codigos de programasCodigos de programas
Codigos de programas
 
Clase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugbClase8 3 ejemplo analisis lexico-sintactico miniugb
Clase8 3 ejemplo analisis lexico-sintactico miniugb
 
Practicas programacion 1 10
Practicas programacion 1 10Practicas programacion 1 10
Practicas programacion 1 10
 
Practicas programacion 1 10
Practicas programacion 1 10Practicas programacion 1 10
Practicas programacion 1 10
 
Clase de los nodos de la pila
Clase de los nodos de la pilaClase de los nodos de la pila
Clase de los nodos de la pila
 
5... reglas de produccion
5... reglas de produccion5... reglas de produccion
5... reglas de produccion
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 

Último

PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2Eliseo Delgado
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfMaritza438836
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAJesus Gonzalez Losada
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalRosarioChoque3
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...MagalyDacostaPea
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdfGabrieldeJesusLopezG
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdflizcortes48
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAlejandrino Halire Ccahuana
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOMARIBEL DIAZ
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Carol Andrea Eraso Guerrero
 

Último (20)

PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
PÉNSUM ENFERMERIA 2024 - ECUGENIUS S.A. V2
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx¿Amor o egoísmo? Esa es la cuestión.pptx
¿Amor o egoísmo? Esa es la cuestión.pptx
 
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdfPROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
PROGRAMACIÓN CURRICULAR - DPCC- 5°-2024.pdf
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICA
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbalPPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
PPT_ Prefijo homo tema para trabajar los prefijos en razonamiento verbal
 
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
4° SES COM MAR 09 Leemos una noticia del dengue e identificamos sus partes (1...
 
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdfPRIMER GRADO SOY LECTOR PART1- MD  EDUCATIVO.pdf
PRIMER GRADO SOY LECTOR PART1- MD EDUCATIVO.pdf
 
Cuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdfCuadernillo de actividades eclipse solar.pdf
Cuadernillo de actividades eclipse solar.pdf
 
Amor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdfAmor o egoísmo, esa es la cuestión por definir.pdf
Amor o egoísmo, esa es la cuestión por definir.pdf
 
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADOPLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
PLAN DE TUTORIA- PARA NIVEL PRIMARIA CUARTO GRADO
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
Desarrollo de habilidades del siglo XXI - Práctica Educativa en una Unidad-Ca...
 

Analizador Léxico en C++

  • 1. #include <iostream> #include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string> #include <fstream> #define TAM_BUFFER 100 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; class Lexico { char *nombreFichero; //NOmbre del fichero fuente FILE* entrada; //Fichero de entrada int n1; //Numero de linea int traza; //control de traza char buffer[TAM_BUFFER]; //Buffer auxiliar de caracteres int pBuffer; // Posicion en el buffer public: Lexico(char *unNombreFichero, int una_traza=0); ~Lexico(void); char siguienteToken(void); void devuelveToken(char token); int lineaActual(void){return n1;}; int existeTraza(void){if(traza) return 1; else return 0;}; }; Lexico::Lexico(char *unNombreFichero, int una_traza) { entrada= fopen(unNombreFichero, "r+"); if((entrada==NULL)) { cout<<"No se puede abrir el archivo"<<endl; system("pause"); exit(-2); } if(una_traza) traza=1; else traza =0; n1=1; // se inicializa el contador de línea pBuffer=0;//Se inicializa la posicion del buffer } Lexico::~Lexico() { fclose(entrada); } char Lexico::siguienteToken(void) { char car; while((car=((pBuffer>0)? buffer[--pBuffer]:getc(entrada)))!=EOF) { if(car==' ') continue; if(car=='n'){++n1; continue;} break; } if(traza) cout<<"ANALIZADOR LEXICO: Lee el token "<<car<<endl; switch(car) { case'M': // Palabra reservada case'R': case'W': case'=': //asigancion case'(': //parentesis
  • 2. case')': case';'://separadores case'}'://separadores case'{': case'.'://fin de programa case'+': case'*': case'-': case'/': case'%': return(car); } if(islower(car)) return(car);//variable else if (isdigit(car)) return(car);//constante else { cout<<"Error Lexico: Token Desconocido "<<endl; system("pause"); exit(-4); } return(car); } void Lexico::devuelveToken(char token) { if(pBuffer>TAM_BUFFER) { cout<<"Error: Desbordamiento del buffer del analizador lexico "<<endl; system("pause"); exit(-5); } else { buffer[pBuffer++]=token; if(existeTraza()) cout<<"ANALIZADOR LEXICO: Recibe en buffer el token "<<token<<endl; system("pause"); } } int main(int argc, char** argv) { int traza; char token; Lexico obj("prueba1.txt",1); if(obj.existeTraza()) cout<<"INICIO DE ANALISIS"<<endl; while((token=obj.siguienteToken())!='}') cout<<token<<endl; system("pause"); return 0; }