Analisis lexico 2
Upcoming SlideShare
Loading in...5
×
 

Analisis lexico 2

on

  • 2,932 views

 

Statistics

Views

Total Views
2,932
Views on SlideShare
2,932
Embed Views
0

Actions

Likes
0
Downloads
79
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Analisis lexico 2 Analisis lexico 2 Presentation Transcript

    • ANALISIS LEXICO
    • FASES 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 ANALISIS
    • ANALISIS LEXICO
      • TAREA 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
      • PATRON
      • Es 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.
      • LEXEMA
      • Es 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: TOKEN, PATRON LEXEMA
    • ESPECIFICACIONES DE LOS 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:
      • s 0 = є ,
      • s 1 = s,
      • s 2 = ss,
      • s 3 = 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 minusculas
      • D como el alfabeto de los 10 digitos decimales
      • Los siguientes son ejemplos de nuevos lenguajes creados a partir de L y D.
      • L U D es el conjunto de letras y digitos
      • LD es el conjunto de cadenas que consta de una letra seguida de un digito
      • L 4 es el conjunto de todas las cadenas de cuatro letras
      • L* es el conjunto de todas las cadenas de letras, incluyendo є , la cadena vacia
      • L(L U D)* es el conjunto de todas las cadenas de letras y digitos que comienzan con una letra.
      • D* es el conjunto de todas las cadenas de uno o mas digitos.
      • 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=A 4
      • cad2=A 5
      • 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 CLASE
      • Sea X= {c,d,e}, Y={3,4} y Z={a,b} obtener:
      • X U Y
      • (Z? X)?
      • (Z U X)+
      • (XY) 0
      • (XUZ?)U X 0
      • ZY U YZ
      • (XY) U Z
      • Sean las cadenas cad1=Ana, cad2=reprobo cad3=la cad4=materia
      • 1. cad1cad2=
      • 2. Longitud=
      • 3. cad1cad2cad3cad4=
      • 4. Longitud=
      • 5. є є cad3 є cad4 є є є cad1 є cad2=
    • EXPRESIONES REGULARES
        • Los tokens son cadenas de caracteres que tienen un significado.
        • Por ejem el Token id puede tiene un sin fin de lexemas : iCont, X, iCalinf, iNum, etc.
        • Las cadenas que forman parte de este lenguaje, cumple con ciertas reglas: Patron
        • El patron que reglamenta a un token, puede especificarse utilizando expresiones regulares.
        • Las expresiones regulares son una notacion, que nos permite definir de manera precisa, al conjunto de cadenas que forman el lenguaje representado por un token.
      • Una expresion regular r denota a un lenguaje L(r)
      • REGLAS PARA EXPRESIONES REGULARES VALIDAS SOBRE UN ALFABETO Σ
    • EJEMPLO 1
      • Obtener la definicion regular para el token con las siguientes caracteristicas:
      • Numero entero par
      • El cero es considerado par.
      • Lexema: 16,7772,14444,222,418
      • Dig ⇒ 0 |1 |2 |3 |4 |5 |6 |7 |8 |9
      • Par ⇒ 0 |2 |4 |6 | 8
      • NumPar ⇒ (Dig*)(Par)
    • EJEMPLO 1 (continuacion)
      • NumPar ⇒ Dig* Par
      • Obtenemos el lenguaje de la expresión regular Dig :
      • Dig = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
      • Usaremos la notación 0-9 para indicar 0, 1, ... , 9.
      • Calculamos ahora Dig*
      • Dig* = { 0-9 }* = { 0-9 }º U { 0-9 }¹ U { 0-9 }² U { 0-9 }³ U ...
      • = { є } U { 0-9 }¹ U { 0-9 }{ 0-9 } U { 0-9 }{ 0-9 }{ 0-9 } U ...
      • = { є , 0-9 } U { 00-99 } U { 000-999 } U ...
      • = { є , 0-9, 00-99, 000-999, ... }
      • Por último, efectuamos la concatenación
      • NumPar ⇒ Dig* Par
      • Dig* Par = { є , 0-9, 00-99, 000-999, ... } { 0, 2, 4, 6, 8 }
      • NumPar denota al lenguaje formado por las cadenas de digitos que terminan en par: 0,2,4,6,8
    • EJEMPLO 2
      • Encuentre la definicion regular para el token con las siguientes categorias.
      • La cadena empiese con al menos un digito y termina en letra
      • El ultimo digito de ser par y la primera letra debe ser vocal (el cero se considera par)
      • Lexema: 764a, 6E, 111118am
      • Analizando los lexemas, observamos que por medio de una concatenacion es posible llegar a la solucion. Dicha concatenacion tiene como operandos: secuencia de digitos y secuencia de letras.
      • token = (SecDig)(SecLet)
      • L(token) = L(SecDig)L(SecLet)
    • EJEMPLO 2 (continuacion)
    • EJERCICIO
    • UN LENGUAJE PARA ESPECIFICACION DE ANALIZADORES LEXICOS
      • Se han desarrollado algunas herramientas para construir analizadores lexicos apartir de notaciones basadas en expresiones regulares.
      • Ejem LEX muy utilizada en la especificacion de analizadores lexicos. Esa herramienta se denomina compilador Lex y la especificacion de su entrada, Lenguaje Lex
    • TRABAJO
      • Investigar todo lo relacionado con la herramienta LEX (PCLEX).
      • - Estructura de un programa LEX
      • - Funciones y variables suministradas por PCLEX
      • - Un ejemplo,
      • - Etc.
      • Investigar un Analizador Lexico (SCANNER)
      • Es trabajo es para entregar para el lunes 27 de septiembre. NO SE RECIBIRAN TRABAJOS DESPUES DE ESTA FECHA.
    • GRAFOS
      • Grafo :  Un grafo,  G , es un par ordenado de  V  y  A , donde  V  es el conjunto de  vértices  o  nodos  del grafo y  A  es un conjunto de aristas que unen un vertice con otro, a estos también se les llama  arcos  o  ejes  del grafo.
      • Un vértice puede tener cero o más aristas, pero toda arista debe unir exactamente a dos vértices.
      • Arista :  Son las líneas con las que se unen los nodos de un grafo y con la que se construyen también caminos.
      • Si la arista carece de dirección se denota indistintamente ( a, b)  o ( b, a) ,  siendo  a  y  b  los vértices que une.
      • Si ( a ,b)  es una arista, a los vértices  a  y  b  se les llama sus  extremos .
      • Aristas Adyacentes:  Se dice que dos aristas son adyacentes si convergen en el mismo vértice.
      • Aristas Paralelas:  Se dice que dos aristas son paralelas si el vértice inicial y el final son el mismo.
      • Aristas Cíclicas:  Arista que parte de un vértice para entrar en el mismo.
      • Vértice :  Son los puntos o nodos con los que esta conformado un grafo.
      • Llamaremos  grado  de un vértice al número de aristas de las que es extremo. Se dice que un vértice es  par  o  impar  según lo sea su grado.
      • •   Vértices Adyacentes:  Si tenemos un par de vértices de un grafo  (U, V)  y si tenemos una arista que los une, entonces  U  y  V  son vértices adyacentes y se dice que  U  es el  vértice inicial  y  V  el  vértice adyacente .
      • •   Vértice Aislado:  Es un vértice de grado cero.
      • •   Vértice Terminal:  Es un vértice de grado  1 .
    • CLASIFICACION DE GRAFOS
      • En un  grafo no dirigido  el par de vértices que representa un arco no está ordenado. Por lo tanto, los pares  (v1, v2)  y  (v2, v1)  representan el mismo arco.
      • En un  grafo dirigido  cada arco está representado por un par ordenado de vértices, de forma que los pares  (v1, v2)  y  (v2, v1)  representan dos arcos diferentes.
      • Grafo completo :  Aquel con una arista entre cada par de vértices. Un grafo completo con  n  vértices se denota  Kn . A continuación pueden verse los dibujos de  K3 ,  K4 ,  K5  y  K6 :
      • Grafo nulo :  Se dice que un grafo es nulo cuando los vértices que lo componen no están conectados, esto es, que son vértices aislados:
    • AUTOMATAS FINITOS Se utiliza para compilar una expresion regular, esto mediante la construccion de un diagrama de transiciones llamado automata finito. Un automata finito puede y ser determinista y no determinista
      • En la siguiente figura se muestra un grafo de transiciones de un AFN que reconoce:
      • Al lenguaje (a |b)*abb que es el conjunto de todas las cadenas de caracteres de a y b que terminen en abb.
      • Conjunto de estados del AFN es {0,1,2,3,}
      • El alfabeto de simbolos de entrada es {a,b}
      • El estado 0 es el estado de inicio
      • El estado de aceptacion 3 esta indicado mendiante un circulo doble.
    • Tabla de transiciones