SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Ejemplo de Análisis Léxico con Dev C++

EJEMPLO DE ANALIZADOR LEXICO USANDO DEV C++

OBJETIVOS
Estudiar el código fuente de un programa prototipo de análisis léxico.
Aplicar el análisis léxico utilizando código en lenguaje C++ creado con Dev C++
PROTOTIPO DE UN ANALIZADOR LEXICO
Suponga que se desea construir una mini simulación de un compilador, tomando encuenta
nada más el análisis léxico de un programa. El programa fuente será un códigoescrito en un
lenguaje definido por el usuario(podemos llamarlo MiniDev). En este caso el código ha sido
escrito en lenguaje C++ y se debe trabajar con el programa Dev C++ v4.9.
Generalmente un compilador toma el programa fuente, lo interpreta y crea un programaobjeto
(normalmente en lenguaje máquina). Por ahora nos limitaremos a comprender yanalizar una de
las formas, de cómo se llevaría a cabo un analizador léxico según lascaracterísticas de un
lenguaje.
La definición de los componentes léxicos del lenguaje MiniDeves la siguiente:
Identificadores, que sólo son nombres de variables y están compuestos por una única
letra minúscula de rango de a – z.
Constantes: numéricas utilizando dígitos en el rango 0 – 9.
Operadores: +, -, *, / y %.
Símbolo: asignación:=, paréntesis (

), separador de sentenciaspunto y coma,

indicadores de principio y fin de bloque { }.
Palabras reservadas que están formadas por una letra mayúscula, las cuales son: R
(lectura), W (escritura) y M (programa principal).
Observe que en este lenguaje, todos los tokens son de un sólo carácter. Además seconsidera
que se tiene un solo tipo de dato: entero, y que las variables están formadaspor una única letra
minúscula, y las constantes son de un dígito. Se asume que paraidentificar la sintaxis de cada
sentencia, se conoce que reglas de programa se han deseguir, con solo conocer el token por el
que comienza la sentencia.
Programa de ejemplo escrito con código fuente reconocido por el lenguajeMiniDev.
Página 1
Ejemplo de Análisis Léxico con Dev C++

El análisis léxico debe separar el fichero fuente en componentes léxicos o tokens, y enviarlos al
analizador sintáctico (en este guía no se detallara el analizador sintáctico).
Habitualmente se envían los componentes léxicos y sus atributos. En este caso solo se
enviaran los tokens, ya que el atributo va implícito en el token (tan sólo se tiene el tipo dedato
entero).
A

continuación

se

muestra

la

definición

de

clase

Léxico,

la

cual

contiene

las

funcionesnecesarias para poder implementar un análisis léxico adecuado para el lenguaje
DEVC.

#include<iostream>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string>
#define TAM_BUFFER 100
using namespace std;
classLexico
{
char *nombreFichero;
FILE* entrada;
int n1;
inttraza;
char buffer[TAM_BUFFER];
intpBuffer;
public:
Lexico(char *unNombreFichero, intuna_traza=0);
~Lexico(void);
Página 2
Ejemplo de Análisis Léxico con Dev C++

charsiguienteToken(void);
voiddevuelveToken(char toke);
intlineaActual(void){return n1; };
intexisteTraza(void){if(traza)return 1; else return 0;}
};
Lexico::Lexico(char *unNombreFichero, intuna_traza)
{
entrada=fopen(unNombreFichero, "rt");
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;
pBuffer=0;
}
Lexico::~Lexico()
{
fclose(entrada);
}
charLexico::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':
case'R':
case'W':
case'=':
case'(':
case')':
case';':
case'}':
case'{':
case'.':
case'+':
case'*':
case'-':
case'/':
case'%':
Página 3
Ejemplo de Análisis Léxico con Dev C++

return(car);
}
if(islower(car))return(car);
else if(isdigit(car)) return(car);
else
{
cout<<"Error Lexico: Token Desconocido"<<endl;
system("pause");
exit(-4);
}
return(car);
}
voidLexico::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");
}
}
PROGRAMA PRINCIPAL
A continuación se muestra un pequeño programa para observar como es realizado elproceso
de análisis léxico por la clase. (SI Ud. desea puede implementar otro tipo de proceso dentro de
main).
intmain()
{
int traza;
chartoken;
Lexicoobj("ejemplo_minidev.txt",1);
if(obj.existeTraza())
cout<<"INICIO DE ANALISIS"<<endl;
while((token=obj.siguienteToken() )!='}')
cout<<token<<endl;
system("pause");
return 0;
}

Página 4

Mais conteúdo relacionado

Mais procurados

Maquina de pila abstracta
Maquina de pila abstractaMaquina de pila abstracta
Maquina de pila abstractawilfredo pena
 
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
 
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CCristian Maza
 
Multiprogramacion
MultiprogramacionMultiprogramacion
MultiprogramacionIrisMTF16
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteJosé Antonio Sandoval Acosta
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosRosviannis Barreiro
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del clienteGabriel Mondragón
 
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUrban Skate House
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosLilian León Meza
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datosMaria Barrios
 

Mais procurados (20)

Maquina de pila abstracta
Maquina de pila abstractaMaquina de pila abstracta
Maquina de pila abstracta
 
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
 
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación C
 
Multiprogramacion
MultiprogramacionMultiprogramacion
Multiprogramacion
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
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
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Fases del rup
Fases del rupFases del rup
Fases del rup
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Programación del lado del cliente
Programación del lado del clienteProgramación del lado del cliente
Programación del lado del cliente
 
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
 
COMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de SimbolosCOMPILADORES-Tabla de Simbolos
COMPILADORES-Tabla de Simbolos
 
Ejercicios de base de datos
Ejercicios de base de datosEjercicios de base de datos
Ejercicios de base de datos
 

Destaque

Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoangiepao1717
 
Funciones sintácticas
Funciones sintácticasFunciones sintácticas
Funciones sintácticasXaverius
 
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones Moviles
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones MovilesDescargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones Moviles
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones MovilesPedro Antonio Villalta (Pavillalta)
 
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras ING
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras INGCuestionario de Conceptos Básicos Sobre Redes de Computadoras ING
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras INGPedro Antonio Villalta (Pavillalta)
 
Router
RouterRouter
RouterOscar
 
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TIS
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TISForo de Conceptos y Generalidades Sobre Redes de Computadoras TIS
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TISPedro Antonio Villalta (Pavillalta)
 

Destaque (19)

Análisis léxico y análisis sintáctico
Análisis léxico y análisis sintácticoAnálisis léxico y análisis sintáctico
Análisis léxico y análisis sintáctico
 
Función sintáctica
Función sintácticaFunción sintáctica
Función sintáctica
 
La oracion
La oracionLa oracion
La oracion
 
Funciones sintácticas
Funciones sintácticasFunciones sintácticas
Funciones sintácticas
 
Nivel sintáctico
Nivel sintácticoNivel sintáctico
Nivel sintáctico
 
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones Moviles
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones MovilesDescargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones Moviles
Descargar Java JDK, Netbeans y Java ME para Desarrollo de Aplicaciones Moviles
 
Herramientas para Desarrollo de Aplicaciones Moviles
Herramientas para Desarrollo de Aplicaciones MovilesHerramientas para Desarrollo de Aplicaciones Moviles
Herramientas para Desarrollo de Aplicaciones Moviles
 
Guia de css para principiantes
Guia de css para principiantesGuia de css para principiantes
Guia de css para principiantes
 
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras ING
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras INGCuestionario de Conceptos Básicos Sobre Redes de Computadoras ING
Cuestionario de Conceptos Básicos Sobre Redes de Computadoras ING
 
Mini manual de JFlap
Mini manual de JFlapMini manual de JFlap
Mini manual de JFlap
 
Router
RouterRouter
Router
 
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TIS
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TISForo de Conceptos y Generalidades Sobre Redes de Computadoras TIS
Foro de Conceptos y Generalidades Sobre Redes de Computadoras TIS
 
Actualizar IOS de router cisco
Actualizar IOS de router ciscoActualizar IOS de router cisco
Actualizar IOS de router cisco
 
Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)Introducción a la Programación en Visual C# (C Sharp)
Introducción a la Programación en Visual C# (C Sharp)
 
Concentrador (hub)
Concentrador (hub)Concentrador (hub)
Concentrador (hub)
 
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico ConceptosCompiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico Conceptos
 
N ivel semantico
N ivel semanticoN ivel semantico
N ivel semantico
 
Estructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeIntEstructura Repetitiva MIENTRAS (While) con PSeInt
Estructura Repetitiva MIENTRAS (While) con PSeInt
 
Funciones sintácticas
Funciones sintácticasFunciones sintácticas
Funciones sintácticas
 

Semelhante a Compiladores, Analisis Lexico, Ejemplo Minilenguaje

Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppInfomania pro
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores Nestor Traña
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
Visual Basic
Visual BasicVisual Basic
Visual BasicIrismar_6
 
Pseudocodigo
PseudocodigoPseudocodigo
PseudocodigoTensor
 
Pseudocodigo
PseudocodigoPseudocodigo
PseudocodigoTensor
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnosticoJavierCR2017
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Juan Carlos Prieto
 
Compiladores Ex..ppt
Compiladores Ex..pptCompiladores Ex..ppt
Compiladores Ex..pptMarko Zapata
 
compiladores.pptx presentación de compiladores
compiladores.pptx presentación de compiladorescompiladores.pptx presentación de compiladores
compiladores.pptx presentación de compiladoresBEVERLYIGUARDIA
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.DENIRAMIREZANDRADE
 

Semelhante a Compiladores, Analisis Lexico, Ejemplo Minilenguaje (20)

Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cpp
 
Programacion
ProgramacionProgramacion
Programacion
 
Introducción A Compiladores
Introducción A Compiladores Introducción A Compiladores
Introducción A Compiladores
 
Compilador
CompiladorCompilador
Compilador
 
lexico.pptx
lexico.pptxlexico.pptx
lexico.pptx
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Presentacion proyecto
Presentacion proyectoPresentacion proyecto
Presentacion proyecto
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Compiladores (1) pedro vasques
Compiladores (1) pedro vasquesCompiladores (1) pedro vasques
Compiladores (1) pedro vasques
 
Preguntas de diagnostico
Preguntas de diagnosticoPreguntas de diagnostico
Preguntas de diagnostico
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#
 
Compiladores Ex..ppt
Compiladores Ex..pptCompiladores Ex..ppt
Compiladores Ex..ppt
 
compiladores.pptx presentación de compiladores
compiladores.pptx presentación de compiladorescompiladores.pptx presentación de compiladores
compiladores.pptx presentación de compiladores
 
Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.Programación de nivel básico 1. c1.
Programación de nivel básico 1. c1.
 
C++
C++C++
C++
 

Mais de Pedro Antonio Villalta (Pavillalta)

32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup
32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup
32- Android, Desarrollo de Aplicaciones Moviles, Importancia del MockupPedro Antonio Villalta (Pavillalta)
 
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot Suite
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot SuitePublicar en Facebook, Twitter, Linkedind y Google+ con Hoot Suite
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot SuitePedro Antonio Villalta (Pavillalta)
 

Mais de Pedro Antonio Villalta (Pavillalta) (20)

Primer Ejemplo de Proyecto en Android Studio
Primer Ejemplo de Proyecto en Android StudioPrimer Ejemplo de Proyecto en Android Studio
Primer Ejemplo de Proyecto en Android Studio
 
Vtiger CRM, Software para Inteligencia de Negocios
Vtiger CRM, Software para Inteligencia de NegociosVtiger CRM, Software para Inteligencia de Negocios
Vtiger CRM, Software para Inteligencia de Negocios
 
Introduccion a Lenguaje HTML, Programacion Web
Introduccion a Lenguaje HTML, Programacion WebIntroduccion a Lenguaje HTML, Programacion Web
Introduccion a Lenguaje HTML, Programacion Web
 
32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup
32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup
32- Android, Desarrollo de Aplicaciones Moviles, Importancia del Mockup
 
31-Android Generalidades Sobre Servicios Webs con MySQL
31-Android Generalidades Sobre Servicios Webs con MySQL31-Android Generalidades Sobre Servicios Webs con MySQL
31-Android Generalidades Sobre Servicios Webs con MySQL
 
Controles y Objetos Android Studio (Actualizada 2016)
Controles y Objetos Android Studio (Actualizada 2016)Controles y Objetos Android Studio (Actualizada 2016)
Controles y Objetos Android Studio (Actualizada 2016)
 
Entorno-de-Desarrollo-Android-Studio
Entorno-de-Desarrollo-Android-StudioEntorno-de-Desarrollo-Android-Studio
Entorno-de-Desarrollo-Android-Studio
 
Instalacion-y-Configuracion-de-Android-Studio-con-Genymotion
Instalacion-y-Configuracion-de-Android-Studio-con-GenymotionInstalacion-y-Configuracion-de-Android-Studio-con-Genymotion
Instalacion-y-Configuracion-de-Android-Studio-con-Genymotion
 
Generalidades-de-Android-Estudio
Generalidades-de-Android-EstudioGeneralidades-de-Android-Estudio
Generalidades-de-Android-Estudio
 
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
Entornos-de-Desarrollo-Eclipse-y-Android-SDKEntornos-de-Desarrollo-Eclipse-y-Android-SDK
Entornos-de-Desarrollo-Eclipse-y-Android-SDK
 
Conceptos y Generalidades de Android
Conceptos y Generalidades de AndroidConceptos y Generalidades de Android
Conceptos y Generalidades de Android
 
Capitulo I Cisco CCNA1: La vida en un mundo centrado en la red
Capitulo I Cisco CCNA1: La vida en un mundo centrado en la redCapitulo I Cisco CCNA1: La vida en un mundo centrado en la red
Capitulo I Cisco CCNA1: La vida en un mundo centrado en la red
 
Capas del Modelo OSI y sus Funciones
Capas del Modelo OSI y sus FuncionesCapas del Modelo OSI y sus Funciones
Capas del Modelo OSI y sus Funciones
 
Cosas que solo pasan en El Salvador
Cosas que solo pasan en El SalvadorCosas que solo pasan en El Salvador
Cosas que solo pasan en El Salvador
 
Compiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de TransicionesCompiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de Transiciones
 
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot Suite
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot SuitePublicar en Facebook, Twitter, Linkedind y Google+ con Hoot Suite
Publicar en Facebook, Twitter, Linkedind y Google+ con Hoot Suite
 
Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)Estructuras Repetitivas con PSeInt (Parte 2)
Estructuras Repetitivas con PSeInt (Parte 2)
 
Creacion de diagramas de clases en visual c#
Creacion de diagramas de clases en visual c#Creacion de diagramas de clases en visual c#
Creacion de diagramas de clases en visual c#
 
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
Primeros Ejemplos Usando Operadores en Visual C# (C Sharp)
 
Primer Proyecto en Visual C# (versión 2012)
Primer Proyecto en Visual C# (versión 2012)Primer Proyecto en Visual C# (versión 2012)
Primer Proyecto en Visual C# (versión 2012)
 

Último

ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfluisantoniocruzcorte1
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfManuel Molina
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdfOswaldoGonzalezCruz
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 

Último (20)

ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdfÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
ÉTICA, NATURALEZA Y SOCIEDADES_3RO_3ER TRIMESTRE.pdf
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdfTarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
Tarea 5_ Foro _Selección de herramientas digitales_Manuel.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
5° SEM29 CRONOGRAMA PLANEACIÓN DOCENTE DARUKEL 23-24.pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 

Compiladores, Analisis Lexico, Ejemplo Minilenguaje

  • 1. Ejemplo de Análisis Léxico con Dev C++ EJEMPLO DE ANALIZADOR LEXICO USANDO DEV C++ OBJETIVOS Estudiar el código fuente de un programa prototipo de análisis léxico. Aplicar el análisis léxico utilizando código en lenguaje C++ creado con Dev C++ PROTOTIPO DE UN ANALIZADOR LEXICO Suponga que se desea construir una mini simulación de un compilador, tomando encuenta nada más el análisis léxico de un programa. El programa fuente será un códigoescrito en un lenguaje definido por el usuario(podemos llamarlo MiniDev). En este caso el código ha sido escrito en lenguaje C++ y se debe trabajar con el programa Dev C++ v4.9. Generalmente un compilador toma el programa fuente, lo interpreta y crea un programaobjeto (normalmente en lenguaje máquina). Por ahora nos limitaremos a comprender yanalizar una de las formas, de cómo se llevaría a cabo un analizador léxico según lascaracterísticas de un lenguaje. La definición de los componentes léxicos del lenguaje MiniDeves la siguiente: Identificadores, que sólo son nombres de variables y están compuestos por una única letra minúscula de rango de a – z. Constantes: numéricas utilizando dígitos en el rango 0 – 9. Operadores: +, -, *, / y %. Símbolo: asignación:=, paréntesis ( ), separador de sentenciaspunto y coma, indicadores de principio y fin de bloque { }. Palabras reservadas que están formadas por una letra mayúscula, las cuales son: R (lectura), W (escritura) y M (programa principal). Observe que en este lenguaje, todos los tokens son de un sólo carácter. Además seconsidera que se tiene un solo tipo de dato: entero, y que las variables están formadaspor una única letra minúscula, y las constantes son de un dígito. Se asume que paraidentificar la sintaxis de cada sentencia, se conoce que reglas de programa se han deseguir, con solo conocer el token por el que comienza la sentencia. Programa de ejemplo escrito con código fuente reconocido por el lenguajeMiniDev. Página 1
  • 2. Ejemplo de Análisis Léxico con Dev C++ El análisis léxico debe separar el fichero fuente en componentes léxicos o tokens, y enviarlos al analizador sintáctico (en este guía no se detallara el analizador sintáctico). Habitualmente se envían los componentes léxicos y sus atributos. En este caso solo se enviaran los tokens, ya que el atributo va implícito en el token (tan sólo se tiene el tipo dedato entero). A continuación se muestra la definición de clase Léxico, la cual contiene las funcionesnecesarias para poder implementar un análisis léxico adecuado para el lenguaje DEVC. #include<iostream> #include<stdio.h> #include<ctype.h> #include<stdlib.h> #include<string> #define TAM_BUFFER 100 using namespace std; classLexico { char *nombreFichero; FILE* entrada; int n1; inttraza; char buffer[TAM_BUFFER]; intpBuffer; public: Lexico(char *unNombreFichero, intuna_traza=0); ~Lexico(void); Página 2
  • 3. Ejemplo de Análisis Léxico con Dev C++ charsiguienteToken(void); voiddevuelveToken(char toke); intlineaActual(void){return n1; }; intexisteTraza(void){if(traza)return 1; else return 0;} }; Lexico::Lexico(char *unNombreFichero, intuna_traza) { entrada=fopen(unNombreFichero, "rt"); 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; pBuffer=0; } Lexico::~Lexico() { fclose(entrada); } charLexico::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': case'R': case'W': case'=': case'(': case')': case';': case'}': case'{': case'.': case'+': case'*': case'-': case'/': case'%': Página 3
  • 4. Ejemplo de Análisis Léxico con Dev C++ return(car); } if(islower(car))return(car); else if(isdigit(car)) return(car); else { cout<<"Error Lexico: Token Desconocido"<<endl; system("pause"); exit(-4); } return(car); } voidLexico::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"); } } PROGRAMA PRINCIPAL A continuación se muestra un pequeño programa para observar como es realizado elproceso de análisis léxico por la clase. (SI Ud. desea puede implementar otro tipo de proceso dentro de main). intmain() { int traza; chartoken; Lexicoobj("ejemplo_minidev.txt",1); if(obj.existeTraza()) cout<<"INICIO DE ANALISIS"<<endl; while((token=obj.siguienteToken() )!='}') cout<<token<<endl; system("pause"); return 0; } Página 4