analisis lexico 1
Post on 13-Jun-2015
414 Views
Preview:
TRANSCRIPT
ANALISIS LEXICOANALISIS LEXICO
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.
El análisis que toma al PF como entrada, consiste a su vez de tres fases:
FASES DEL ANALISISFASES DEL ANALISIS
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
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
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.
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”.
EJEMPLO:EJEMPLO: TOKEN, PATRON LEXEMA
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.
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
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
Para el analizador lexico interesan principalmente la union, concatenacion y la cerradura.
OPERACIONES APLICADA A LOS LENGUAJES
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
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)
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}
continuacion EJERCICIO
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=
top related