Analisis lexico 1

18
ANALISIS ANALISIS LEXICO LEXICO

Transcript of Analisis lexico 1

Page 1: Analisis lexico 1

ANALISIS LEXICOANALISIS LEXICO

Page 2: Analisis lexico 1

FASES DE UN COMPILADORFASES DE UN COMPILADOR

La fase de análisis tiene como entrada, el PF. En base a este programa fuente, la fase de análisis construye una representación intermedia.

¿de quién?...

Del PF, precisamente. En la fase de síntesis se toma de entrada a esta representación intermedia, para la generación del código que constituye al PO.

Page 3: Analisis lexico 1

El análisis que toma al PF como entrada, consiste a su vez de tres fases:

FASES DEL ANALISISFASES DEL ANALISIS

Page 4: Analisis lexico 1

ANALISIS LEXICOTAREA PRINCIPAL

Consiste en leer de izquierda a derecha el PF.El PF es la entrada al analizador lexico y generalmente es un

archivo de texto (los interpretes reciben una o varias cadenas como entrada, desde el teclado).

Este monitoreo de la entrada (PF) lo efectua el analizador lexico con el fin de identificar tokens, los cuales son cadenas o secuencias de caracteres que tienen un cierto significado.

La salida de un analizador lexico es un conjunto de tokens

Page 5: Analisis lexico 1

Ademas de su principal funcion, tambien realiza otra de gran importancia:

Elimina los comentarios del programa. Elimina espacios en blanco, tabuladores, retorno de carro, etc y

en general todo aquello que carezca de significado según la sintaxis del lenguaje.

Reconocer los identificadores del usuario, numeros, palabras reservadas, etc.

Llevar la cuenta del numero de lineas por la que va leyendo, por si se produce un error, dar informacion acerca de donde se ha producido.

Avisar de errores lexicos, Por ejem, si el carácter “@” no pertenece al lenguaje, se debe emitir un error.

ANALISIS LEXICO

Page 6: Analisis lexico 1

ANALISIS LEXICO

Recibida la orden “Dame el siguiente componente lexico del analizador sintactico, el lexico lee los caracteres de entrada hasta que pueda identificar el siguiente componente lexico.

Page 7: Analisis lexico 1

TOKEN, PATRON Y LEXEMA PATRONEs una regla que describe el conjunto de lexemas que puede

representar a un determinado token en los programas fuentes.

TOKEN (COMPONENTE LEXICO)Es la categoria lexica de un patron. Los cuales son cadenas o

secuencias de caracteres que tienen un cierto significado.En un lenguaje de programación, tenemos varias clases de tokens:

Palabras reservadas, Identificadores, Operadores aritméticos, Operadores relacionales, Operadores lógicos, Constantes Literales (String), Números, Separadores, Operadores de asignación, etc.

LEXEMAEs cada secuencia de caracteres concreta que encaja con un patron.P.ej: “8", “23" y “50" son algunos lexemas que encajan con el

patrón (‘0'|’1'|’2'| ... |’9') . El número de lexemas que puede encajar con un patrón puede ser finito o infinito, p.ej. en el patrón ‘W’‘H’‘I’‘L’‘E’ sólo encaja el lexema “WHILE”.

Page 8: Analisis lexico 1

EJEMPLO:EJEMPLO: TOKEN, PATRON LEXEMA

Page 9: Analisis lexico 1

ESPECIFICACIONES DE LOS ESPECIFICACIONES DE LOS COMPONENTES LEXICOS (TOKENS)COMPONENTES LEXICOS (TOKENS)Cada patron concuerda con una serie de cadenas, de modo que los

patrones serviran como nombres para conjuntos de cadenas.

CADENAS Y LENGUAJES

Alfabeto: Cualquier conjunto finito de simbolos. Ejem. El conjunto {0,1} es el alfabeto binario, El codigo ASCII es alfabeto del computador.

Cadena: Es una secuencia finita de simbolos tomados de ese alfabeto.

La longitud de una cadena s que suele escribirse |s| es el numero de apariciones de simbolos en s.

Una cadena vacia, representada por є, es una cadena especial de longitud 0.

Page 10: Analisis lexico 1
Page 11: Analisis lexico 1

CADENAS Y LENGUAJES

Lenguaje: Es cualquier conjunto de cadenas de un alfabeto fijo.

Esta definicion no atribuye ningun significado a las cadenas de un lenguaje.

Si x e y son cadenas, entonces la concatenacion de x e y, que se escribe xy es la cadena que resulta de agregar y a x.

Por ejemplo, si x = caza e y= fortunas, entonces xy = casafortunas.

sє = s

Page 12: Analisis lexico 1

Se considera la concatenacion como un producto, la cual se define de la siguiente manera:

s0 = є,

s1 = s,

s2 = ss,

s3 = sss

CADENAS Y LENGUAJES

Page 13: Analisis lexico 1

Para el analizador lexico interesan principalmente la union, concatenacion y la cerradura.

OPERACIONES APLICADA A LOS LENGUAJES

Page 14: Analisis lexico 1

Ejemplo:Sea: L el conjunto {A,B,…,Z,a,b,…,z} y D={0,1,…,9}Se puede considerar L y D de la siguiente manera:L como el alfabeto de letras mayusculas y minusculasD como el alfabeto de los 10 digitos decimalesLos siguientes son ejemplos de nuevos lenguajes creados a partir de

L y D.

1. L U D es el conjunto de letras y digitos2. LD es el conjunto de cadenas que consta de una letra seguida de

un digito3. L4 es el conjunto de todas las cadenas de cuatro letras4. L* es el conjunto de todas las cadenas de letras, incluyendo є, la

cadena vacia5. L(L U D)* es el conjunto de todas las cadenas de letras y digitos

que comienzan con una letra.6. D* es el conjunto de todas las cadenas de uno o mas digitos.7. L? es el conjunto de 0 o una concatenacion de L

OPERACIONES APLICADA A LOS LENGUAJES

Page 15: Analisis lexico 1

EJEMPLO

Sea A={A,B,…,Z} y B={0,1,2,…,9} y cad1 = HOLA cad2 = TODOS cad3=T3

cad1cad2cad3= HOLATODOST3 єcad1 є єcad3 є є єcad2= HOLAT3TODOS Longitud = 11 cad1=A4

cad2=A5

cad2=L(B)

Page 16: Analisis lexico 1

Sea A= {0,1} B= {a,b,c} y C= {1,2} obtener:(a)AUB = {0,1}U{a,b,c} = {0,1,a,b,c} (b) (BC) U A = {a,b,c} {1,2} U {0,1} = {a1,a2,b1,b2,c1,c2} U {0,1} = {a1,a2,b1,b2,c1,c2,0,1} (c) A* = {0,1}* = {0,1}0 U {0,1}1 U {0,1}2 U {0,1}3 U ... = {є } U {0,1} U {0,1}{0,1} U {0,1}{0,1}{0,1} U ... = {є,0,1} U {00,01,10,11} U {000,001,010,011,100,101,110,111}U...

={є,0,1,00,01,10,11,000,001,010,011,100,101,110,111,...} (d) (B+ U C)0 = {є} (e) (C? A)? = ( {1,2}? {0,1} )? = (( {1,2}0 U {1,2}1 ) {0,1} )? = (( {є} U {1,2} ) {0,1} )? = ( {є,1,2} {0,1} )? = {0,1,10,11,20,21}? = {0,1,10,11,20,21}0 U {0,1,10,11,20,21}1

= {є} U {0,1,10,11,20,21} = {є,0,1,10,11,20,21}

Page 17: Analisis lexico 1

continuacion EJERCICIO

Page 18: Analisis lexico 1

EJERCICIO EN CLASESea X={c,d,e}, Y={3,4} y Z={a,b} obtener:a) X U Yb) (Z? X)?c) (Z U X)+d) (XY)0

e) (XUZ?)U X0

f) ZY U YZg) (XY) U ZSean las cadenas cad1=Ana, cad2=reprobo cad3=la cad4=materia1. cad1cad2= 2. Longitud=3. cad1cad2cad3cad4=4. Longitud=5. є єcad3 є cad4 є є є cad1 є cad2=