SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
CIS-IXB-001
UNIVERSIDAD
NACIONAL
DE LOJA
´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables
Carrera de Ingenier´ıa en Sistemas
”ANALIZADOR LEXICO
ESTRUCTURA ARCHIVO JFLEX”
Tarea 1
Noveno B
Autor:
• Raul-Gomez
Docente: Ing. Henry-Paz,
Tarea de C. Por Raul-Gomez is licensed Under a Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License.
Fecha: December 15, 2014
LOJA ECUADOR
1
1 Analizador L´exico
Se encarga de buscar los componentes l´exicos o palabras que componen el programa
fuente, seg´un unas reglas o patrones. La entrada del analizador l´exico podemos definirla
como una secuencia de caracteres.
Figure 1: Estructura Lexica
• gram´atica (N, T, P, S)
• N S´ımbolos no terminales.
• T S´ımbolos terminales
• P Reglas de producci´on
• S Axioma inicial
El analizador l´exico tiene que dividir la secuencia de caracteres en palabras con
significado propio y despu´es convertirlo a una secuencia de terminales desde el punto de
vista del analizador sint´actico, que es la entrada del analizador sint´actico. El analizador
l´exico reconoce las palabras en funci´on de una gram´atica regular de manera que sus NO
TERMINALES se convierten en los elementos de entrada de fases posteriores. En LEX,
por ejemplo, esta gram´atica se expresa mediante expresiones regulares.
1.1 Funci´on del analizador l´exico.
El analizador l´exico es la primera fase de un compilador. Su principal funci´on consiste
en leer los caracteres de entrada y elaborar como salida una secuencia de componentes
l´exicos que utiliza el analizador sint´actico para hacer el an´alisis. Esta interacci´on, suele
aplicarse convirtiendo al analizador l´exico en una subrutina o corrutina del analizador
sint´actico. Recibida la orden “Dame el siguiente componente l´exico”del analizador
sint´actico, el analizador l´exico lee los caracteres de entrada hasta que pueda identificar
el siguiente componente l´exico.
• Eliminar los comentarios del programa.
• Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo
aquello que carezca de significado seg´un la sintaxis del lenguaje.
2
Figure 2: Interacci´on de un analizador l´exico con el analizador sint´actico
• Reconocer los identificadores de usuario, n´umeros, palabras reservadas del lenguaje,
..., y tratarlos correctamente con respecto a la tabla de s´ımbolos (solo en los casos
que debe de tratar con la tabla de s´ımbolos).
• Llevar la cuenta del n´umero de l´ınea por la que va leyendo, por si se produce alg´un
error, dar informaci´on sobre donde se ha producido.
• Avisar de errores l´exicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de un
error.
• Puede hacer funciones de preprocesador.
Adem´as el analizador l´exico es responsable de:
• Manejo de apertura y cierre de archivo, lectura de caracteres y gesti´on de posibles
errores de apertura.
• Eliminar comentarios, espacios en blanco, tabuladores y saltos de l´ınea.
• Inclusi´on de archivos y macros.
• Contabilizar n´umero de l´ıneas y columnas para emitir mensajes de error.
1.2 Componentes L´exicos, Patrones y Lexemas
El analizador lexicogr´afico puede tener la siguiente estructura:
Figure 3: Interacci´on de componentes
3
Donde cada acci´on es un fragmento de programa que describe cual ha de ser la acci´on
del analizador l´exico cuando la secuencia de entrada coincida con la expresi´on regular.
En la fase de an´alisis, los t´erminos componentes l´exicos (token), patr´on y lexema se
emplean con significados espec´ıficos. Un analizador l´exico, inicialmente lee los lexemas y
le asigna un significado propio.
Componente l´exico es la secuencia l´ogica y coherente de caracteres relativo a una
categor´ıa: identificador, palabra reservada, literales (cadena/num´erica), operador o
car´acter de puntuaci´on, adem´as de que un componente l´exico puede tener uno o varios
lexemas.
Patr´ones una regla que genera la secuencia de caracteres que puede representar a un
determinado componente l´exico (expresi´on regular).
Lexema es una cadena de caracteres que concuerda con un patr´on que describe un
componente l´exico (valor de cadena). Ejemplo de una cadena de c´odigo: const pi =
3.1416;
Ej: 8, 23, 50 ( son lexemas que encajan con el patr´on ( 0 — 1 — 2 — ... — 9) + ).
Una vez detectado que un grupo de caracteres coincide con un patr´on, se ha detectado
un lexema. A continuaci´on se le asocia un n´umero, que se le pasar´a al sint´actico, y, si es
necesario, informaci´on adicional, como puede ser una entrada en la tabla de s´ımbolos.
La tabla de s´ımbolos suelen ser listas encadenadas de registros con parte variable: listas
ordenadas, ´arboles binarios de b´usqueda, tablas hash, etc.
Lexemas Componente l´exico Patr´on
const const const
= relaci´on ¡ o ¡= o = o ¡¿ o ¿ o ¿=
Pi identificador letra seguida de letras o n´umeros
3.1416 n´umero cualquier literal num´erica
“hola mundo” literal caracteres entre comillas
<identificador, atributo para el s´ımbolo E>
<op_asignacion>
<identificador, atributo para el s´ımbolo M>
<op_multiplica>
<identificador, apuntador al s´ımbolo C>
<op_exponente>
<numero, atributo valor 2>
1.3 Analizador Sint´actico
Este analizador se encarga de formar componentes sint´acticos del lenguaje fuente. En
definitiva, nos permitir´a saber si un texto concreto pertenece al conjunto de posibles
textos de un lenguaje. Para implementar un analizador sint´actico necesitamos una
gram´atica que nos proporcione la especificaci´on sint´actica del lenguaje fuente. Una
gram´atica est´a formado por una serie de reglas. Cada regla tiene una parte izquierda y
una parte derecha. Si se reconoce la parte derecha de una regla, se puede sustituir todo
por la parte izquierda de la misma regla. Las reglas est´an formadas por dos tipos de
s´ımbolos:
4
• No terminales: tambi´en llamados variables y que se expanden en partes derechas de
otras reglas.
• Terminales: son tokens de la especificaci´on l´exica. Ejemplo: queremos especificar la
sintaxis de operaciones aritm´eticas de n´umeros enteros. Las operaciones en cuesti´on
son la suma y la resta. Una primera aproximaci´on podr´ıa ser: E E + E E E – E
E nint Los tokens son: +: el signo m´as (suma) -: el signo menos (resta) nint: un
n´umero entero, cuya expresi´on regular ser´ıa [0-9]* Sin embargo, esta gram´atica no
es v´alida ya que es ambigua. La ambiguedad es un problema bastante importante
ya que implica que puede haber m´as de un ´arbol de derivaci´on para encontrar
una misma cadena. No se pueden implementar analizadores mediante gram´aticas
ambiguas, ya que aparecer´ıan conflictos. Veamos dos ´arboles de derivaci´on con la
primera gram´atica para formar la expresi´on 1+1:
Figure 4: Comprobacion de un analizador sintaxico
La ambiguedad es bastante dif´ıcil de detectar. Para ello se definen una serie de
subconjuntos de gram´aticas, y a la hora de dise˜nar el analizador podemos detectar
dicha ambiguedad. En nuestro caso interesa usar las gram´aticas SLR a partir de las
cuales se pueden implementar analizadores sint´acticos ascendentes. La gram´atica
anterior en SLR ser´ıa: E E + T E E - T E T T nint
1.4 Analisis Sem´antico
Sem´antica: conjunto de reglas que especifican el significado de cualquier sentencia
sint´acticamente correcta y escrita en un determinado lenguaje. El an´alisis sem´antico,
a diferencia de otras fases, no se realiza claramente diferenciado del resto de las tareas
del compilador. Fase en la que se obtiene informaci´on necesaria para la compilaci´on
tras conocer la estructura sint´actica del programa. Completa las fases de an´alisis
l´exico y sint´actico incorporando comprobaciones que no pueden asimilarse al mero
reconocimiento de una cadena dentro de un lenguaje.
Errores sem´anticos de un programa: Conversiones de tipos no permitidas
int x;
x = 4.32;
Error: Ej1.java [6:1] possible loss of precision
{ Variables usadas y no definidas
5
{ Operandos de tipos no compatibles
if (x || 5) x = 0;
Error: Ej2.java [7:1] operator || cannot be applied to int,int
El an´alisis sem´antico se divide en dos categor´ıas:
– An´alisis de la exactitud del programa para garantizar una ejecuci´on adecuada.
– Algunos lenguajes (Lisp, Smalltallk) pueden no tener an´alisis est´atico.
– Por ejemplo, ADA es un lenguaje con fuertes restricciones para que un pro-
grama sea ejecutable.
– An´alisis para mejorar la eficiencia (optimizaci´on del programa traducido)
2 Jflex
Lex es un programa para generar analizadores l´exicos (en ingl´es scanners o lexers).
Lex se utiliza com´unmente con el programa yacc que se utiliza para generar an´alisis
sint´actico. Lex, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador
l´exico est´andar en los sistemas Unix, y se incluye en el est´andar de POSIX. Lex
toma como entrada una especificaci´on de analizador l´exico y devuelve como salida
el c´odigo fuente implementando el analizador l´exico en C.
Aunque tradicionalmente se trata de software propietario, existen versiones libres
de lex basadas en el c´odigo original de ATT en sistemas como OpenSolaris y Plan
9 de los laboratorios Bell. Otra versi´on popular de software libre de lex es Flex.
2.1 Estructura de un archivo de lex
La estructura de un archivo de lex es intencionadamente similar a la de un archivo
del yacc; los archivos se dividen en tres secciones, separadas por l´ıneas que contienen
solamente dos s´ımbolos
"%", como sigue:
Secci´on de declaraciones
%%
Secci´on de reglas
%%
Secci´on de c´odigo en C
Lo siguiente es un ejemplo de archivo lex para la versi´on Flex de lex. Reconoce
cadenas de n´umeros (n´umeros enteros) en la entrada, y simplemente los imprime en
la salida.
6
/*** Secci´on de declaraciones ***/
%{
/* C´odigo en C que ser´a copiado */
#include <stdio.h>
%}
/* Esto indica a Flex que lea s´olo un fichero de entrada */
%option noyywrap
%%
/*** Secci´on de reglas ***/
/* [0-9]+ identifica una cadena de uno o m´as d´ıgitos */
[0-9]+ {
/* yytext es una cadena que contiene el texto coincidente. */
printf("Encontrado un entero: %sn", yytext);
}
. { /* Ignora todos los dem´as caracteres. */ }
%%
/*** Secci´on de c´odigo en C ***/
int main(void)
{
/* Ejecuta el ’’lexer’’, y despu´es termina. */
yylex();
return 0;
}
Si se da esta entrada a flex, ser´a convertida en un archivo de C, lex.yy.c. Esto se
puede compilar en un ejecutable que encuentre y haga salir cadenas de n´umeros
enteros. Por ejemplo, dando la entrada:
abc123z.!&*2ghj6
el programa imprimir´a:
Encontrado un entero: 123
Encontrado un entero: 2
Encontrado un entero: 6
7
3 BIBLIOGRAFIA
References
[1] Juan Marcos Sacrist´an Donoso “Desarrollo de compiladores”. 2008. Ensenanza
informatica.Disponible en: http://megazar.tripod.com/compil.pdf
[2] Alfred V. Aho,Ravi Sethi,Jeffrey D. Ullman “Compiladores: principios,
t´ecnicas y herramientas”. 1998. (impreso en mexico) 53519 Naucalpan de
Juares, Edo. Mexico. Disponible en: https://books.google.com.ec/books?
id=yG6qJBAnE9UC&pg=PA86&lpg=PA86&dq=compiladores+lexico&source=
bl&ots=rsWPT13_jQ&sig=4xTPyW6bjHW0UvLJNCDs6Vo5cco&hl=es&sa=X&ei=
UVePVLW8CIueNsCjg7gD&ved=0CFkQ6AEwCQ#v=onepage&q=compiladores%
20lexico&f=false
[3] Jeffrey D. Ullaman . ”Traductores, Compiladores e Interpretes. ”. 2012. De-
partamento de Lenguajes y Automatas. Universidad de Sevilla. Disponible en:
https://www.lsi.us.es/docs/doctorado/memorias/TESINA-Roche.pdf
[4] Louden, K.C (2010)Construccion de Compiladores”. Disponible en:
http://centrodeartigo.com/articulos-noticias-consejos/article_
126048.html
8

Mais conteúdo relacionado

Mais procurados

Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxicoFARIDROJAS
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador SintacticoBayo Chicaiza
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semanticoAreli Gómez
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoInfomania pro
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador SintácticoPablo Guerra
 
Compiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo masCompiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo mascesarkt
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoGermania Rodriguez
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis LexicoFARIDROJAS
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS Infomania pro
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintacticoalexisdario
 
Clase analisis lexico
Clase analisis lexicoClase analisis lexico
Clase analisis lexicoInfomania pro
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppInfomania pro
 
Software de programación lógica
Software de programación lógicaSoftware de programación lógica
Software de programación lógicaAlan Guevara
 
Análisis Semántico con Cup
Análisis Semántico con CupAnálisis Semántico con Cup
Análisis Semántico con CupLAUNASA NOVENO B
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semanticoInfomania pro
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2perlallamas
 

Mais procurados (20)

Analizador LÉxico
Analizador LÉxicoAnalizador LÉxico
Analizador LÉxico
 
Analizador Sintactico
Analizador SintacticoAnalizador Sintactico
Analizador Sintactico
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Clase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexicoClase6 conceptos del analisis lexico
Clase6 conceptos del analisis lexico
 
Analizador Sintáctico
Analizador SintácticoAnalizador Sintáctico
Analizador Sintáctico
 
Compiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo masCompiladores analizadores gramática y algo mas
Compiladores analizadores gramática y algo mas
 
AnáLisis LéXico
AnáLisis LéXicoAnáLisis LéXico
AnáLisis LéXico
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintactico
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
 
Clase analisis lexico
Clase analisis lexicoClase analisis lexico
Clase analisis lexico
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Clase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cppClase6 ejemplo analisis lexico dev cpp
Clase6 ejemplo analisis lexico dev cpp
 
Software de programación lógica
Software de programación lógicaSoftware de programación lógica
Software de programación lógica
 
Análisis Semántico con Cup
Análisis Semántico con CupAnálisis Semántico con Cup
Análisis Semántico con Cup
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Unidad4 analisis-semantico
Unidad4 analisis-semanticoUnidad4 analisis-semantico
Unidad4 analisis-semantico
 
Analisis lexico 2
Analisis lexico 2Analisis lexico 2
Analisis lexico 2
 

Destaque

Cuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralCuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralAngie Silva
 
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_
 
Sistemas De Información Gerencial
Sistemas De Información GerencialSistemas De Información Gerencial
Sistemas De Información Gerencialwww.cathedratic.com
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De CompiladorBigbossH
 

Destaque (7)

Tds
TdsTds
Tds
 
Compiladores1
Compiladores1Compiladores1
Compiladores1
 
Cuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralCuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integral
 
Automatas finitos
Automatas finitosAutomatas finitos
Automatas finitos
 
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
 
Sistemas De Información Gerencial
Sistemas De Información GerencialSistemas De Información Gerencial
Sistemas De Información Gerencial
 
DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De Compilador
 

Semelhante a Analizador Léxico, Analizador Sintáctico

Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxActividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxYahirSnchezDjMix
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptxLuisSimn12
 
Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)MARCO POLO SILVA SEGOVIA
 
Lenguajes y Automatas.pptx
Lenguajes y Automatas.pptxLenguajes y Automatas.pptx
Lenguajes y Automatas.pptxdanielloria1024
 
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptx
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptxERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptx
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptxAngelesAguilar29
 
Compiladores analisis lexico
Compiladores analisis lexicoCompiladores analisis lexico
Compiladores analisis lexicoJhampier_Piedra
 
Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019DanielRosero23
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15AndresDvila
 
Análisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteAnálisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteGuiru Xd
 

Semelhante a Analizador Léxico, Analizador Sintáctico (20)

Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptxActividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
Actividad 4.4 y 4.5 Lenguajes y Autómatas Edinson Yahir Sánchez Velázquez.pptx
 
investigacion.pdf
investigacion.pdfinvestigacion.pdf
investigacion.pdf
 
diaposichap.pptx
diaposichap.pptxdiaposichap.pptx
diaposichap.pptx
 
lexico.pptx
lexico.pptxlexico.pptx
lexico.pptx
 
TALLER ANALISIS LEXICO
TALLER ANALISIS LEXICOTALLER ANALISIS LEXICO
TALLER ANALISIS LEXICO
 
investigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdfinvestigacion 4.4 y 4.5.pdf
investigacion 4.4 y 4.5.pdf
 
Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)Capítulo 2 compiladores (willian gallo -------boris chungandro)
Capítulo 2 compiladores (willian gallo -------boris chungandro)
 
Lenguajes y Automatas.pptx
Lenguajes y Automatas.pptxLenguajes y Automatas.pptx
Lenguajes y Automatas.pptx
 
Analisis semantico
Analisis semanticoAnalisis semantico
Analisis semantico
 
Analisis lexico
Analisis lexicoAnalisis lexico
Analisis lexico
 
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptx
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptxERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptx
ERRORES LEXICOS Y GENERADORES DE ANALISIS LEXICOS.pptx
 
ANALISIS SEMANTICO
ANALISIS SEMANTICO ANALISIS SEMANTICO
ANALISIS SEMANTICO
 
Curso prog sist
Curso prog sistCurso prog sist
Curso prog sist
 
Analisis lexico
Analisis lexicoAnalisis lexico
Analisis lexico
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Compiladores analisis lexico
Compiladores analisis lexicoCompiladores analisis lexico
Compiladores analisis lexico
 
Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019Taller de actividades de compiladores 06 06 2019
Taller de actividades de compiladores 06 06 2019
 
Analisis sintactico actividad 15
Analisis sintactico actividad 15Analisis sintactico actividad 15
Analisis sintactico actividad 15
 
Compilador2
Compilador2Compilador2
Compilador2
 
Análisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - DescendenteAnálisis Sintáctico Ascendente - Descendente
Análisis Sintáctico Ascendente - Descendente
 

Último

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoJosDanielEstradaHern
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 

Último (20)

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 

Analizador Léxico, Analizador Sintáctico

  • 1. CIS-IXB-001 UNIVERSIDAD NACIONAL DE LOJA ´Area de la Energ´ıa las Industrias y los Recursos Naturales No Renovables Carrera de Ingenier´ıa en Sistemas ”ANALIZADOR LEXICO ESTRUCTURA ARCHIVO JFLEX” Tarea 1 Noveno B Autor: • Raul-Gomez Docente: Ing. Henry-Paz, Tarea de C. Por Raul-Gomez is licensed Under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Unported License. Fecha: December 15, 2014 LOJA ECUADOR 1
  • 2. 1 Analizador L´exico Se encarga de buscar los componentes l´exicos o palabras que componen el programa fuente, seg´un unas reglas o patrones. La entrada del analizador l´exico podemos definirla como una secuencia de caracteres. Figure 1: Estructura Lexica • gram´atica (N, T, P, S) • N S´ımbolos no terminales. • T S´ımbolos terminales • P Reglas de producci´on • S Axioma inicial El analizador l´exico tiene que dividir la secuencia de caracteres en palabras con significado propio y despu´es convertirlo a una secuencia de terminales desde el punto de vista del analizador sint´actico, que es la entrada del analizador sint´actico. El analizador l´exico reconoce las palabras en funci´on de una gram´atica regular de manera que sus NO TERMINALES se convierten en los elementos de entrada de fases posteriores. En LEX, por ejemplo, esta gram´atica se expresa mediante expresiones regulares. 1.1 Funci´on del analizador l´exico. El analizador l´exico es la primera fase de un compilador. Su principal funci´on consiste en leer los caracteres de entrada y elaborar como salida una secuencia de componentes l´exicos que utiliza el analizador sint´actico para hacer el an´alisis. Esta interacci´on, suele aplicarse convirtiendo al analizador l´exico en una subrutina o corrutina del analizador sint´actico. Recibida la orden “Dame el siguiente componente l´exico”del analizador sint´actico, el analizador l´exico lee los caracteres de entrada hasta que pueda identificar el siguiente componente l´exico. • Eliminar los comentarios del programa. • Eliminar espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo aquello que carezca de significado seg´un la sintaxis del lenguaje. 2
  • 3. Figure 2: Interacci´on de un analizador l´exico con el analizador sint´actico • Reconocer los identificadores de usuario, n´umeros, palabras reservadas del lenguaje, ..., y tratarlos correctamente con respecto a la tabla de s´ımbolos (solo en los casos que debe de tratar con la tabla de s´ımbolos). • Llevar la cuenta del n´umero de l´ınea por la que va leyendo, por si se produce alg´un error, dar informaci´on sobre donde se ha producido. • Avisar de errores l´exicos. Por ejemplo, si @ no pertenece al lenguaje, avisar de un error. • Puede hacer funciones de preprocesador. Adem´as el analizador l´exico es responsable de: • Manejo de apertura y cierre de archivo, lectura de caracteres y gesti´on de posibles errores de apertura. • Eliminar comentarios, espacios en blanco, tabuladores y saltos de l´ınea. • Inclusi´on de archivos y macros. • Contabilizar n´umero de l´ıneas y columnas para emitir mensajes de error. 1.2 Componentes L´exicos, Patrones y Lexemas El analizador lexicogr´afico puede tener la siguiente estructura: Figure 3: Interacci´on de componentes 3
  • 4. Donde cada acci´on es un fragmento de programa que describe cual ha de ser la acci´on del analizador l´exico cuando la secuencia de entrada coincida con la expresi´on regular. En la fase de an´alisis, los t´erminos componentes l´exicos (token), patr´on y lexema se emplean con significados espec´ıficos. Un analizador l´exico, inicialmente lee los lexemas y le asigna un significado propio. Componente l´exico es la secuencia l´ogica y coherente de caracteres relativo a una categor´ıa: identificador, palabra reservada, literales (cadena/num´erica), operador o car´acter de puntuaci´on, adem´as de que un componente l´exico puede tener uno o varios lexemas. Patr´ones una regla que genera la secuencia de caracteres que puede representar a un determinado componente l´exico (expresi´on regular). Lexema es una cadena de caracteres que concuerda con un patr´on que describe un componente l´exico (valor de cadena). Ejemplo de una cadena de c´odigo: const pi = 3.1416; Ej: 8, 23, 50 ( son lexemas que encajan con el patr´on ( 0 — 1 — 2 — ... — 9) + ). Una vez detectado que un grupo de caracteres coincide con un patr´on, se ha detectado un lexema. A continuaci´on se le asocia un n´umero, que se le pasar´a al sint´actico, y, si es necesario, informaci´on adicional, como puede ser una entrada en la tabla de s´ımbolos. La tabla de s´ımbolos suelen ser listas encadenadas de registros con parte variable: listas ordenadas, ´arboles binarios de b´usqueda, tablas hash, etc. Lexemas Componente l´exico Patr´on const const const = relaci´on ¡ o ¡= o = o ¡¿ o ¿ o ¿= Pi identificador letra seguida de letras o n´umeros 3.1416 n´umero cualquier literal num´erica “hola mundo” literal caracteres entre comillas <identificador, atributo para el s´ımbolo E> <op_asignacion> <identificador, atributo para el s´ımbolo M> <op_multiplica> <identificador, apuntador al s´ımbolo C> <op_exponente> <numero, atributo valor 2> 1.3 Analizador Sint´actico Este analizador se encarga de formar componentes sint´acticos del lenguaje fuente. En definitiva, nos permitir´a saber si un texto concreto pertenece al conjunto de posibles textos de un lenguaje. Para implementar un analizador sint´actico necesitamos una gram´atica que nos proporcione la especificaci´on sint´actica del lenguaje fuente. Una gram´atica est´a formado por una serie de reglas. Cada regla tiene una parte izquierda y una parte derecha. Si se reconoce la parte derecha de una regla, se puede sustituir todo por la parte izquierda de la misma regla. Las reglas est´an formadas por dos tipos de s´ımbolos: 4
  • 5. • No terminales: tambi´en llamados variables y que se expanden en partes derechas de otras reglas. • Terminales: son tokens de la especificaci´on l´exica. Ejemplo: queremos especificar la sintaxis de operaciones aritm´eticas de n´umeros enteros. Las operaciones en cuesti´on son la suma y la resta. Una primera aproximaci´on podr´ıa ser: E E + E E E – E E nint Los tokens son: +: el signo m´as (suma) -: el signo menos (resta) nint: un n´umero entero, cuya expresi´on regular ser´ıa [0-9]* Sin embargo, esta gram´atica no es v´alida ya que es ambigua. La ambiguedad es un problema bastante importante ya que implica que puede haber m´as de un ´arbol de derivaci´on para encontrar una misma cadena. No se pueden implementar analizadores mediante gram´aticas ambiguas, ya que aparecer´ıan conflictos. Veamos dos ´arboles de derivaci´on con la primera gram´atica para formar la expresi´on 1+1: Figure 4: Comprobacion de un analizador sintaxico La ambiguedad es bastante dif´ıcil de detectar. Para ello se definen una serie de subconjuntos de gram´aticas, y a la hora de dise˜nar el analizador podemos detectar dicha ambiguedad. En nuestro caso interesa usar las gram´aticas SLR a partir de las cuales se pueden implementar analizadores sint´acticos ascendentes. La gram´atica anterior en SLR ser´ıa: E E + T E E - T E T T nint 1.4 Analisis Sem´antico Sem´antica: conjunto de reglas que especifican el significado de cualquier sentencia sint´acticamente correcta y escrita en un determinado lenguaje. El an´alisis sem´antico, a diferencia de otras fases, no se realiza claramente diferenciado del resto de las tareas del compilador. Fase en la que se obtiene informaci´on necesaria para la compilaci´on tras conocer la estructura sint´actica del programa. Completa las fases de an´alisis l´exico y sint´actico incorporando comprobaciones que no pueden asimilarse al mero reconocimiento de una cadena dentro de un lenguaje. Errores sem´anticos de un programa: Conversiones de tipos no permitidas int x; x = 4.32; Error: Ej1.java [6:1] possible loss of precision { Variables usadas y no definidas 5
  • 6. { Operandos de tipos no compatibles if (x || 5) x = 0; Error: Ej2.java [7:1] operator || cannot be applied to int,int El an´alisis sem´antico se divide en dos categor´ıas: – An´alisis de la exactitud del programa para garantizar una ejecuci´on adecuada. – Algunos lenguajes (Lisp, Smalltallk) pueden no tener an´alisis est´atico. – Por ejemplo, ADA es un lenguaje con fuertes restricciones para que un pro- grama sea ejecutable. – An´alisis para mejorar la eficiencia (optimizaci´on del programa traducido) 2 Jflex Lex es un programa para generar analizadores l´exicos (en ingl´es scanners o lexers). Lex se utiliza com´unmente con el programa yacc que se utiliza para generar an´alisis sint´actico. Lex, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador l´exico est´andar en los sistemas Unix, y se incluye en el est´andar de POSIX. Lex toma como entrada una especificaci´on de analizador l´exico y devuelve como salida el c´odigo fuente implementando el analizador l´exico en C. Aunque tradicionalmente se trata de software propietario, existen versiones libres de lex basadas en el c´odigo original de ATT en sistemas como OpenSolaris y Plan 9 de los laboratorios Bell. Otra versi´on popular de software libre de lex es Flex. 2.1 Estructura de un archivo de lex La estructura de un archivo de lex es intencionadamente similar a la de un archivo del yacc; los archivos se dividen en tres secciones, separadas por l´ıneas que contienen solamente dos s´ımbolos "%", como sigue: Secci´on de declaraciones %% Secci´on de reglas %% Secci´on de c´odigo en C Lo siguiente es un ejemplo de archivo lex para la versi´on Flex de lex. Reconoce cadenas de n´umeros (n´umeros enteros) en la entrada, y simplemente los imprime en la salida. 6
  • 7. /*** Secci´on de declaraciones ***/ %{ /* C´odigo en C que ser´a copiado */ #include <stdio.h> %} /* Esto indica a Flex que lea s´olo un fichero de entrada */ %option noyywrap %% /*** Secci´on de reglas ***/ /* [0-9]+ identifica una cadena de uno o m´as d´ıgitos */ [0-9]+ { /* yytext es una cadena que contiene el texto coincidente. */ printf("Encontrado un entero: %sn", yytext); } . { /* Ignora todos los dem´as caracteres. */ } %% /*** Secci´on de c´odigo en C ***/ int main(void) { /* Ejecuta el ’’lexer’’, y despu´es termina. */ yylex(); return 0; } Si se da esta entrada a flex, ser´a convertida en un archivo de C, lex.yy.c. Esto se puede compilar en un ejecutable que encuentre y haga salir cadenas de n´umeros enteros. Por ejemplo, dando la entrada: abc123z.!&*2ghj6 el programa imprimir´a: Encontrado un entero: 123 Encontrado un entero: 2 Encontrado un entero: 6 7
  • 8. 3 BIBLIOGRAFIA References [1] Juan Marcos Sacrist´an Donoso “Desarrollo de compiladores”. 2008. Ensenanza informatica.Disponible en: http://megazar.tripod.com/compil.pdf [2] Alfred V. Aho,Ravi Sethi,Jeffrey D. Ullman “Compiladores: principios, t´ecnicas y herramientas”. 1998. (impreso en mexico) 53519 Naucalpan de Juares, Edo. Mexico. Disponible en: https://books.google.com.ec/books? id=yG6qJBAnE9UC&pg=PA86&lpg=PA86&dq=compiladores+lexico&source= bl&ots=rsWPT13_jQ&sig=4xTPyW6bjHW0UvLJNCDs6Vo5cco&hl=es&sa=X&ei= UVePVLW8CIueNsCjg7gD&ved=0CFkQ6AEwCQ#v=onepage&q=compiladores% 20lexico&f=false [3] Jeffrey D. Ullaman . ”Traductores, Compiladores e Interpretes. ”. 2012. De- partamento de Lenguajes y Automatas. Universidad de Sevilla. Disponible en: https://www.lsi.us.es/docs/doctorado/memorias/TESINA-Roche.pdf [4] Louden, K.C (2010)Construccion de Compiladores”. Disponible en: http://centrodeartigo.com/articulos-noticias-consejos/article_ 126048.html 8