SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PDF
Los lenguajes aceptados para una maquina de turing
PPT
Generador de codigo intermedio
PDF
automatas finitos
PPTX
Expresiones regulares
PDF
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
PPTX
Analizador Sintáctico
PPTX
Gramática Libre de Contexto
Los lenguajes aceptados para una maquina de turing
Generador de codigo intermedio
automatas finitos
Expresiones regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Analizador Sintáctico
Gramática Libre de Contexto

La actualidad más candente (20)

PPTX
Analisis Semantico
PPTX
Clase4: Transformación desde Expresión regular a Autómata finito determinista
PDF
Unidad4 analisis-semantico
PDF
ESPRESIONES REGULARES
PDF
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
PPT
1.4 ensambladores y compiladores
PDF
Unidad1 Lenguajes y automatas
PDF
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
PPTX
Razonamiento monotono
PPTX
Control de Flujo [Telecomunicaciones]
PPTX
Metodologías, metricas y modelo cocomo para el costo de un proyecto software
PPTX
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
PPTX
Planificacion De Proyectos De Software
PDF
Paradigmas de programacion
PDF
Mapa conceptual de Java
PPTX
Problemas en el desarrollo de software
DOCX
Traductor y su estructura
PPTX
Modelos de software ventajas y desventajas
PPTX
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
PPTX
Análisis léxico y análisis sintáctico
Analisis Semantico
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Unidad4 analisis-semantico
ESPRESIONES REGULARES
ANALIZADOR SINTACTICO: INTRODUCION, CONCEPTOS, CARACTERISTICAS
1.4 ensambladores y compiladores
Unidad1 Lenguajes y automatas
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Razonamiento monotono
Control de Flujo [Telecomunicaciones]
Metodologías, metricas y modelo cocomo para el costo de un proyecto software
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Planificacion De Proyectos De Software
Paradigmas de programacion
Mapa conceptual de Java
Problemas en el desarrollo de software
Traductor y su estructura
Modelos de software ventajas y desventajas
MONITOREO Y AUDITORIA DE LAS BASE DE DATOS..pptx
Análisis léxico y análisis sintáctico
Publicidad

Destacado (20)

PDF
Compiladores, Analisis Lexico Conceptos
PDF
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
PPT
Analizador LÉxico
PPTX
Compiladores, Analisis Lexico
PDF
Analizador Léxico en C++
PPT
Teoría de Autómatas y Lenguajes Formales (I Bimestre)
PPTX
Expresiones regulares y gramáticas
PPT
DiseñO De Compilador
PPTX
Compiladores, Analisis Lexico, Tabla de Transiciones
PPT
Analisis Lexico
PDF
Automatas y compiladores clase1
PDF
Automatas y compiladores clase4
PDF
Automatas y compiladores clase3
PDF
Automatas y compiladores clase2
PPTX
PDF
Compiladores teoria e implementacion
PPTX
Expresiones regulares y gramaticas
PPT
Automatas de pila_no_det
PPTX
Lenguajes regulares
Compiladores, Analisis Lexico Conceptos
Compiladores, Analisis Lexico, Ejemplo Minilenguaje
Analizador LÉxico
Compiladores, Analisis Lexico
Analizador Léxico en C++
Teoría de Autómatas y Lenguajes Formales (I Bimestre)
Expresiones regulares y gramáticas
DiseñO De Compilador
Compiladores, Analisis Lexico, Tabla de Transiciones
Analisis Lexico
Automatas y compiladores clase1
Automatas y compiladores clase4
Automatas y compiladores clase3
Automatas y compiladores clase2
Compiladores teoria e implementacion
Expresiones regulares y gramaticas
Automatas de pila_no_det
Lenguajes regulares
Publicidad

Similar a Analisis lexico 2 (20)

PPT
Analisis lexico 1
PDF
Apuntes compiladores
PPT
Claselexico
PPT
AnáLisis LéXico
PPT
Cap5
PDF
PRESENTACION. CfdggdgfddfdfdONCEPTOS BÁSICOS.pdf
DOC
Expresiones regulares fin
PPTX
Clase2
PDF
S03.s1 - Material.pdf
PDF
Documeto compilardorcontadorletras
PDF
Analisis lexico automatas i
PPT
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
PPT
Incorporacion De Una Tabla De Simbolos Compiladores
PPTX
Analizador léxico
PPTX
Analizador léxico
PDF
sintaxis de los lenguajes de programación
PPT
Curso prog sist
PPT
Curso prog sist
PPTX
Sesión 4 y 5 LFP.pptx
Analisis lexico 1
Apuntes compiladores
Claselexico
AnáLisis LéXico
Cap5
PRESENTACION. CfdggdgfddfdfdONCEPTOS BÁSICOS.pdf
Expresiones regulares fin
Clase2
S03.s1 - Material.pdf
Documeto compilardorcontadorletras
Analisis lexico automatas i
Compiladores - Incorporacion de una Tabla de Simbolos Compiladores
Incorporacion De Una Tabla De Simbolos Compiladores
Analizador léxico
Analizador léxico
sintaxis de los lenguajes de programación
Curso prog sist
Curso prog sist
Sesión 4 y 5 LFP.pptx

Más de perlallamas (20)

PPTX
PPTX
DOCX
DOCX
03 ejemplo - plan soporte
PPTX
Sw necesario pc
PPTX
PDF
Guia para adquirir una laptop
PDF
Como elegir-una-pc-de-escritorio
PPTX
Arquitectura Hardware
PPTX
PPTX
PDF
Avance programático instala y configura servicios
PDF
Avance programático administra s.o
PPTX
Diagramas de flujo (1)
PDF
Diagramas
PDF
Que son los diagramas de flujo
PDF
Procedimiento mantenimiento correctivo hw
PDF
Visio preventivo -hw-1 a
DOCX
Diagnostico
PDF
Examen power point
03 ejemplo - plan soporte
Sw necesario pc
Guia para adquirir una laptop
Como elegir-una-pc-de-escritorio
Arquitectura Hardware
Avance programático instala y configura servicios
Avance programático administra s.o
Diagramas de flujo (1)
Diagramas
Que son los diagramas de flujo
Procedimiento mantenimiento correctivo hw
Visio preventivo -hw-1 a
Diagnostico
Examen power point

Analisis lexico 2

  • 2. 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.
  • 3. El análisis que toma al PF como entrada, consiste a su vez de tres fases: FASES DEL ANALISIS
  • 4. 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
  • 5. 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
  • 6. 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.
  • 7. 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”.
  • 8. EJEMPLO: TOKEN, PATRON LEXEMA
  • 9. 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.
  • 10.  
  • 11. 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
  • 12. 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
  • 13. Para el analizador lexico interesan principalmente la union, concatenacion y la cerradura. OPERACIONES APLICADA A LOS LENGUAJES
  • 14. 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
  • 15. 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)
  • 16. 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}
  • 18. 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=
  • 19. 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.
  • 20. Una expresion regular r denota a un lenguaje L(r) REGLAS PARA EXPRESIONES REGULARES VALIDAS SOBRE UN ALFABETO Σ
  • 21. 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)
  • 22. 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
  • 23. 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)
  • 26. 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
  • 27. 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.
  • 28. 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.
  • 29. 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 .
  • 30. 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.
  • 31. 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:
  • 32. 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
  • 33. 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.