539
Procesadores de Lenguajes Tema II: An´ alisis L´ exico PROCESADORES DE LENGUAJES TEMA II.- AN ´ ALISIS L ´ EXICO Prof. Dr. Nicol´ as Luis Fern´ andez Garc´ ıa Departamento de Inform´ atica y An´ alisis Num´ erico Escuela Polit´ ecnica Superior Universidad de C´ordoba Universidad de C´ordoba: Escuela Polit´ ecnica Superior Ingenier´ ıa Inform´ atica 1/ 539

PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

PROCESADORES DE LENGUAJESTEMA II.- ANALISIS LEXICO

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 1 / 539

Page 2: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

Tema I.- Introduccion

Tema II .- Analisis Lexicografico

Tema III.- Fundamentos Teoricos del Analisis Sintactico

Tema IV.- Analisis Sintactico Descendente

Tema V.- Analisis Sintactico Ascendente

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 2 / 539

Page 3: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 3 / 539

Page 4: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 4 / 539

Page 5: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 5 / 539

Page 6: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 6 / 539

Page 7: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Programa

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 7 / 539

Page 8: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido del tema

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 8 / 539

Page 9: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 9 / 539

Page 10: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 10 / 539

Page 11: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 11 / 539

Page 12: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 12 / 539

Page 13: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 13 / 539

Page 14: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 14 / 539

Page 15: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Analisis Lexico

Primera fase del proceso de traduccion

Lee el codigo fuente “caracter a caracter”

Genera los componentes lexicos

Procedimiento auxiliar del Analisis Sintactico

Crea la Tabla de Sımbolos

El Gestor de errores procesa los errores lexicos detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 15 / 539

Page 16: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Codigo Fuente

Analizador Lexico

Tabla de Sımbolos Gestor de Errores

Componentes Lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 16 / 539

Page 17: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Codigo Fuente

Analizador Lexico

Tabla de Sımbolos

Gestor de Errores

Componentes Lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 17 / 539

Page 18: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Codigo Fuente

Analizador Lexico

Tabla de Sımbolos Gestor de Errores

Componentes Lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 18 / 539

Page 19: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEl analisis lexico en el proceso de traduccion

Codigo Fuente

Analizador Lexico

Tabla de Sımbolos Gestor de Errores

Componentes Lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 19 / 539

Page 20: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 20 / 539

Page 21: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 21 / 539

Page 22: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 22 / 539

Page 23: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 23 / 539

Page 24: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 24 / 539

Page 25: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 25 / 539

Page 26: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 26 / 539

Page 27: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Definicion (Componente lexico)

Elemento mas simple con significado propio de un lenguaje deprogramacion:

Ejemplo

Identificadores: variables, palabras claves, ...

Numeros

Cadenas de caracteres

Operadores: aritmeticos, relacionales, logicos, ...

Signos de puntuacion

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 27 / 539

Page 28: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Los componentes lexicos

Tambien se denominan “tokens”

Son los sımbolos terminales de las gramaticas de contextolibre que generan los lenguajes de programacion.

Son en realidad codigos numericos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 28 / 539

Page 29: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Los componentes lexicos

Tambien se denominan “tokens”

Son los sımbolos terminales de las gramaticas de contextolibre que generan los lenguajes de programacion.

Son en realidad codigos numericos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 29 / 539

Page 30: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionComponentes Lexicos

Los componentes lexicos

Tambien se denominan “tokens”

Son los sımbolos terminales de las gramaticas de contextolibre que generan los lenguajes de programacion.

Son en realidad codigos numericos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 30 / 539

Page 31: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 31 / 539

Page 32: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionTabla de Sımbolos

Tabla de Sımbolos

Se crea durante el Analisis Lexico

Puede almacenar:

+ Numeros+ Cadenas+ ...+ Pero, sobre todo, identificadores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 32 / 539

Page 33: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionTabla de Sımbolos

Tabla de Sımbolos

Cuando el analizador lexico reconoce un identificador:

+ Se inserta el identificador en la Tabla de Sımbolos+ Devuelve el componente lexico de identificador y un puntero o

ındice a su posicion en la Tabla de Sımbolos

La informacion del identificador depende de su naturaleza:

+ Variable: tipo de dato, valor, ...+ Funcion: numero y tipo de argumentos, ...+ Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 33 / 539

Page 34: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionTabla de Sımbolos

Tabla de Sımbolos

Cuando el analizador lexico reconoce un identificador:

+ Se inserta el identificador en la Tabla de Sımbolos+ Devuelve el componente lexico de identificador y un puntero o

ındice a su posicion en la Tabla de Sımbolos

La informacion del identificador depende de su naturaleza:

+ Variable: tipo de dato, valor, ...+ Funcion: numero y tipo de argumentos, ...+ Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 34 / 539

Page 35: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionTabla de Sımbolos

Ejemplo (dividendo = divisor * cociente + resto)

Nombre Tipo Valor ...

dividendo

divisor

cociente

resto

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 35 / 539

Page 36: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionTabla de Sımbolos

Nota

La informacion de los identificadores se completa durante todas lasfases del proceso de traduccion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 36 / 539

Page 37: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 37 / 539

Page 38: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves o reservadas

Son identificadores con un significado especial

Algunos lenguajes de programacion tambien permiten usar laspalabras claves como variables

+ Las palabras claves no serıan palabras reservadas+ Dificulta la legibilidad de los programas

Ejemplo (PL/I)

IF (IF > 1) THEN THEN = 0;

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 38 / 539

Page 39: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves o reservadas

Son identificadores con un significado especial

Algunos lenguajes de programacion tambien permiten usar laspalabras claves como variables

+ Las palabras claves no serıan palabras reservadas+ Dificulta la legibilidad de los programas

Ejemplo (PL/I)

IF (IF > 1) THEN THEN = 0;

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 39 / 539

Page 40: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves o reservadas

Son identificadores con un significado especial

Algunos lenguajes de programacion tambien permiten usar laspalabras claves como variables

+ Las palabras claves no serıan palabras reservadas+ Dificulta la legibilidad de los programas

Ejemplo (PL/I)

IF (IF > 1) THEN THEN = 0;

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 40 / 539

Page 41: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

Tipos de reconocimiento de las palabras claves:

1.- Implıcito: preinstalacion en la Tabla de Sımbolos2.- Explıcito: reconocimiento especıfico de cada palabra clave.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 41 / 539

Page 42: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

Tipos de reconocimiento de las palabras claves:

1.- Implıcito: preinstalacion en la Tabla de Sımbolos2.- Explıcito: reconocimiento especıfico de cada palabra clave.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 42 / 539

Page 43: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

Tipos de reconocimiento de las palabras claves:

1.- Implıcito: preinstalacion en la Tabla de Sımbolos2.- Explıcito: reconocimiento especıfico de cada palabra clave.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 43 / 539

Page 44: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico+ Al reconocer un identificador, se consulta la Tabla de Sımbolos

para comprobar si es una palabra clave o no.+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 44 / 539

Page 45: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico+ Al reconocer un identificador, se consulta la Tabla de Sımbolos

para comprobar si es una palabra clave o no.+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 45 / 539

Page 46: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico

Ejemplo

Nombre Componente Lexico ... ...if IF

while WHILE...

+ Al reconocer un identificador, se consulta la Tabla de Sımbolospara comprobar si es una palabra clave o no.

+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 46 / 539

Page 47: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico+ Al reconocer un identificador, se consulta la Tabla de Sımbolos

para comprobar si es una palabra clave o no.+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 47 / 539

Page 48: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico+ Al reconocer un identificador, se consulta la Tabla de Sımbolos

para comprobar si es una palabra clave o no.+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 48 / 539

Page 49: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

1.- Preinstalacion en la Tabla de Sımbolos:

+ Se almacena el nombre y el componente lexico+ Al reconocer un identificador, se consulta la Tabla de Sımbolos

para comprobar si es una palabra clave o no.+ Ventajas

- La programacion del analizador lexico es mas sencilla

+ Inconvenientes

- El reconocimiento es mas lento- Se necesita mas memoria para la Tabla de Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 49 / 539

Page 50: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

2.- Reconocimiento especıfico de cada palabra clave.

+ Cada palabra clave es reconocida de forma independiente delos demas identificadores y palabras claves

+ Ventajas

- El reconocimiento es mas rapido- No se necesita aumentar la memoria de la Tabla de Sımbolos:

las palabras claves no se almacenan

+ Inconvenientes

- La programacion del analizador lexico es mas compleja

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 50 / 539

Page 51: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

2.- Reconocimiento especıfico de cada palabra clave.

+ Cada palabra clave es reconocida de forma independiente delos demas identificadores y palabras claves

+ Ventajas

- El reconocimiento es mas rapido- No se necesita aumentar la memoria de la Tabla de Sımbolos:

las palabras claves no se almacenan

+ Inconvenientes

- La programacion del analizador lexico es mas compleja

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 51 / 539

Page 52: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionPalabras claves

Palabras claves

2.- Reconocimiento especıfico de cada palabra clave.

+ Cada palabra clave es reconocida de forma independiente delos demas identificadores y palabras claves

+ Ventajas

- El reconocimiento es mas rapido- No se necesita aumentar la memoria de la Tabla de Sımbolos:

las palabras claves no se almacenan

+ Inconvenientes

- La programacion del analizador lexico es mas compleja

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 52 / 539

Page 53: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 53 / 539

Page 54: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

dividendo

+ Es reconocido como IDENTIFICADOR+ Se devuelve el componente lexico y el puntero a la Tabla de

Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 54 / 539

Page 55: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Se eliminan

+ Espacios en blanco+ Tabuladores+ Saltos de lınea

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 55 / 539

Page 56: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Signo =

+ Se devuelve el token de ASIGNACION

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 56 / 539

Page 57: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Nota

El Analisis Sintactico solo necesita saber que se ha reconocidoel componente lexico ASIGNACION

No le importa si el sımbolo es = o := o cualquier otro

No interesa el texto concreto, sino la categorıa a la quepertenece

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 57 / 539

Page 58: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

divisor

+ Es reconocido como IDENTIFICADOR+ Se devuelve el componente lexico y el puntero a la Tabla de

Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 58 / 539

Page 59: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Signo *

+ Se devuelve el token de PRODUCTO

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 59 / 539

Page 60: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

cociente

+ Es reconocido como IDENTIFICADOR+ Se devuelve el componente lexico y el puntero a la Tabla de

Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 60 / 539

Page 61: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Signo +

+ Se devuelve el token de SUMA

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 61 / 539

Page 62: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

resto

+ Es reconocido como IDENTIFICADOR+ Se devuelve el componente lexico y el puntero a la Tabla de

Sımbolos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 62 / 539

Page 63: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionEjemplo

Ejemplo

Sentencia del lenguaje Cdividendo = divisor * cociente + resto ;

Signo ;

+ Se devuelve el token de FIN DE SENTENCIA

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 63 / 539

Page 64: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 IntroduccionEl analisis lexico en el proceso de traduccionComponentes LexicosTabla de SımbolosPalabras clavesEjemploAutonomıa del analizador lexico

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresUniversidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 64 / 539

Page 65: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 65 / 539

Page 66: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

+ La separacion de tareas facilita el mantenimiento y mejora deltraductor

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 66 / 539

Page 67: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 67 / 539

Page 68: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

+ Los componentes lexicos pueden ser denotados por ExpresionesRegulares

+ Los Automatas Finitos Deterministas (AFD) reconocen laspalabras denotadas por las expresiones regulares

+ Los Analizadores Lexicos estan basados en los AutomatasFinitos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 68 / 539

Page 69: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

+ Los componentes lexicos pueden ser denotados por ExpresionesRegulares

+ Los Automatas Finitos Deterministas (AFD) reconocen laspalabras denotadas por las expresiones regulares

+ Los Analizadores Lexicos estan basados en los AutomatasFinitos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 69 / 539

Page 70: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

+ Los componentes lexicos pueden ser denotados por ExpresionesRegulares

+ Los Automatas Finitos Deterministas (AFD) reconocen laspalabras denotadas por las expresiones regulares

+ Los Analizadores Lexicos estan basados en los AutomatasFinitos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 70 / 539

Page 71: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 71 / 539

Page 72: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

+ El Analisis Lexico es la unica fase que tiene contacto con elcodigo fuente

+ Puede procesar el texto: eliminar espacios en blanco,comentarios

+ Almacena la posicion de los saltos de lınea para informar sobrela localizacion de los errores detectados

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 72 / 539

Page 73: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

+ El Analisis Lexico es la unica fase que tiene contacto con elcodigo fuente

+ Puede procesar el texto: eliminar espacios en blanco,comentarios

+ Almacena la posicion de los saltos de lınea para informar sobrela localizacion de los errores detectados

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 73 / 539

Page 74: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

+ El Analisis Lexico es la unica fase que tiene contacto con elcodigo fuente

+ Puede procesar el texto: eliminar espacios en blanco,comentarios

+ Almacena la posicion de los saltos de lınea para informar sobrela localizacion de los errores detectados

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 74 / 539

Page 75: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 75 / 539

Page 76: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

+ Las operaciones de lectura / escritura son computacionalmentemuy costosas

+ Se puede mejorar la eficiencia si se codifican con sentencias debajo nivel: ensamblador, ...

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 76 / 539

Page 77: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

+ Las operaciones de lectura / escritura son computacionalmentemuy costosas

+ Se puede mejorar la eficiencia si se codifican con sentencias debajo nivel: ensamblador, ...

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 77 / 539

Page 78: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 78 / 539

Page 79: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

+ La codificacion de los caracteres pueden variar de un entornode ejecucion a otro: ASCII, EBCDIC, ...

+ El cambio de codificacion solo requerira modificar el AnalisisLexico, no siendo necesario modificar el resto de fases.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 79 / 539

Page 80: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

+ La codificacion de los caracteres pueden variar de un entornode ejecucion a otro: ASCII, EBCDIC, ...

+ El cambio de codificacion solo requerira modificar el AnalisisLexico, no siendo necesario modificar el resto de fases.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 80 / 539

Page 81: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

IntroduccionAutonomıa del analizador lexico

Razones para separar el analisis lexico del analisis sintactico

Modularidad

Menor complejidad de los componentes lexicos

Pre-procesamiento del codigo fuente

Mejora en la eficiencia del analizador lexico

Portabilidad

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 81 / 539

Page 82: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido del tema

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 82 / 539

Page 83: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicosDescripcion de los componentes lexicosPalabras y lenguajes formalesExpresiones Regulares

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 83 / 539

Page 84: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Componentes lexicos

Elementos basicos de los lenguajes de programacion

Se describen mediante

+ Una descripcion informal+ Una descripcion formal mediante expresiones regulares+ Ejemplos o paradigmas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 84 / 539

Page 85: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Componentes lexicos

Elementos basicos de los lenguajes de programacion

Se describen mediante

+ Una descripcion informal+ Una descripcion formal mediante expresiones regulares+ Ejemplos o paradigmas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 85 / 539

Page 86: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Componentes lexicos

Elementos basicos de los lenguajes de programacion

Se describen mediante

+ Una descripcion informal+ Una descripcion formal mediante expresiones regulares+ Ejemplos o paradigmas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 86 / 539

Page 87: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Componentes lexicos

Elementos basicos de los lenguajes de programacion

Se describen mediante

+ Una descripcion informal+ Una descripcion formal mediante expresiones regulares+ Ejemplos o paradigmas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 87 / 539

Page 88: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Componentes lexicos

Elementos basicos de los lenguajes de programacion

Se describen mediante

+ Una descripcion informal+ Una descripcion formal mediante expresiones regulares+ Ejemplos o paradigmas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 88 / 539

Page 89: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 1 / 7)

IDENTIFICADOR

Descripcion informal: Cadenas de caracteres compuestas porletras, cifras y el sımbolo de subrayado, pero que no comienzapor una cifra.

Descripcion formal:(letra + subrayado)(letra + cifra + subrayado)∗

Ejemplos o paradigmas:dividendo, divisor, cociente, resto, suma total, x 1, ...

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 89 / 539

Page 90: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 2 / 7)

NUMERO

Descripcion informal: numeros enteros, reales, ...

Descripcion formal:cifra cifra∗ (ε+ .cifra∗(ε+ (E + e)(ε+ ” + ” + ”− ”)cifra cifra∗))

Ejemplos o paradigmas: 9, 19.7, 97.7e2, ...

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 90 / 539

Page 91: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 3 / 7)

IF

Descripcion informal: palabra clave de la sentenciacondicional if

Descripcion formal: if

Ejemplo o paradigma: if

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 91 / 539

Page 92: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 4 / 7)

FOR

Descripcion informal: palabra clave de la sentencia derepeticion for

Descripcion formal: for

Ejemplo o paradigma: for

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 92 / 539

Page 93: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 5 / 7)

ASIGNACION

Descripcion informal: signo igual para la sentencia deasignacion

Descripcion formal: =

Ejemplo o paradigma: =

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 93 / 539

Page 94: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 6 / 7)

MAYOR IGUAL QUE

Descripcion informal: operador relacional mayor o igual que

Descripcion formal: >=

Ejemplo o paradigma: >=

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 94 / 539

Page 95: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Ejemplo (Componentes lexicos en el lenguaje C 7 / 7)

FIN SENTENCIA

Descripcion informal: signo de punto y coma para indicar elfin de una sentencia

Descripcion formal: ;

Ejemplo o paradigma: ;

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 95 / 539

Page 96: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Nota

Solo interesa saber el significado (Componente Lexico) que seasocia a uno o mas signos, no como son dichos signos.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 96 / 539

Page 97: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosDescripcion de los componentes lexicos

Nota

Solo interesa saber el significado (Componente Lexico) que seasocia a uno o mas signos, no como son dichos signos.

Ejemplo (Lenguaje Fortran)

La expresion regular para el componente lexicoMAYOR IGUAL QUE es: .(G+g)(E+e).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 97 / 539

Page 98: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicosDescripcion de los componentes lexicosPalabras y lenguajes formalesExpresiones Regulares

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 98 / 539

Page 99: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Alfabeto o vocabulario)

Conjunto finito y no vacıo de sımbolos que permiten formar lapalabras pertenecientes a un lenguaje

Se suele denotar por Σ o V

Σ = {σ1, σ2, · · · , σn}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 99 / 539

Page 100: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo

Σ1 = {0, 1} (Alfabeto binario)

Σ2 = {0, 1, 2, · · · , 9}Σ3 = {a, b, c , · · · , z}Σ4 = {if , else}Σ5 = {ab, ca, bbc}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 100 / 539

Page 101: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Palabra o cadena)

Secuencia finita de sımbolos pertenecientes a un alfabeto

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 101 / 539

Page 102: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Palabra o cadena)

Secuencia finita de sımbolos pertenecientes a un alfabeto

Ejemplo (Palabras definidas sobre)

Σ1 = {0, 1}: 0, 1, 01, 1, 10, 010101, 100,...

Σ3 = {a, b, c , · · · , z}: aab, valor, punto,...

Σ5 = {ab, ca, bbc}: ab, bbc, abab, abbbc,...

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 102 / 539

Page 103: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Longitud de una palabra x)

Numero de sımbolos de un alfabeto que componen dichapalabra.

Se denota por |x |Si Σ = {σ1, σ2, · · · , σn} y x = σi1σi2 · · ·σik entonces |x | = k

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 103 / 539

Page 104: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Nota

La longitud de una palabra depende del alfabeto sobre el que estedefinida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 104 / 539

Page 105: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Nota

La longitud de una palabra depende del alfabeto sobre el que estedefinida.

Ejemplo (Longitud de la palabra x = abab definida sobre)

Σ3 = {a, b, c , · · · , z}: |x | = 4

Σ5 = {ab, ca, bbc}: |x | = 2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 105 / 539

Page 106: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Lenguaje universal definido sobre Σ)

Conjunto de palabras compuestas por cero o mas sımbolos deΣ.

Se representa por Σ∗.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 106 / 539

Page 107: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo (Palabras definidas sobre un alfabeto Σ)

Si Σ = {σ1, σ2, · · · , σn} entonces Σ∗ se puede generar a partirde las palabras de:

+ |x | = 0: “palabra vacıa” que se denota por ε o λ.+ |x | = 1: x = σ1, x = σ2, · · · , x = σn+ |x | = 2: x = σ1σ1, x = σ1σ2, · · ·+ Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 107 / 539

Page 108: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo (Palabras definidas sobre Σ = {a, b, c})|x | = 0: x = ε.

|x | = 1: x = a, x = b, x = c

|x | = 2: x = aa, x = ab, x = ac, x = ba, · · · .Etc.

En resumen, Σ∗ = {ε, a, b, c , aa, ab, ac, ba, · · · }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 108 / 539

Page 109: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Lenguajes formales)

L es un lenguaje formal definido sobre Σ si L ⊆ Σ∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 109 / 539

Page 110: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Lenguajes formales)

L es un lenguaje formal definido sobre Σ si L ⊆ Σ∗

Ejemplo (Lenguajes formales definidos sobre Σ)

L∅ = ∅.Σ

Σ∗

Lσ = {σ} donde σ ∈ Σ

Lε = {ε}Σ+ = {x |x ∈ Σ∗ ∧ |x | ≥ 1}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 110 / 539

Page 111: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Nota

Lε = {ε} 6= L∅ = ∅ε ∈ Σ+ ⇐⇒ ε ∈ Σ

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 111 / 539

Page 112: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo (Lenguajes formales sobre Σ = {a, b, c})L∅ = ∅Lε = {ε}Σ = {a, b, c}Σ∗ = {ε, a, b, c , aa, ab, ac, · · · }La = {a}L = {a, ab, abb, abbb, · · · }

Nota

L puede ser denotado por la expresion regular ab∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 112 / 539

Page 113: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Operaciones con palabras

Concatenacion

Potencia

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 113 / 539

Page 114: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Concatenacion de palabras)

Sea Σ = {σ1, σ2, · · · , σn}x = σi1σi2 · · ·σip , y = σj1σj2 · · ·σjq ∈ Σ∗

La concatenacion de x con y se denota por x · y osimplemente xy

xy = σi1σi2 · · ·σipσj1σj2 · · ·σjq

Ejemplo (Concatenacion de palabras sobre Σ = {a, b, c})Si x = ab , y = bcc entonces xy = abbcc

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 114 / 539

Page 115: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Concatenacion de palabras)

Sea Σ = {σ1, σ2, · · · , σn}x = σi1σi2 · · ·σip , y = σj1σj2 · · ·σjq ∈ Σ∗

La concatenacion de x con y se denota por x · y osimplemente xy

xy = σi1σi2 · · ·σipσj1σj2 · · ·σjq

Ejemplo (Concatenacion de palabras sobre Σ = {a, b, c})Si x = ab , y = bcc entonces xy = abbcc

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 115 / 539

Page 116: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la concatenacion de palabras

Operacion cerrada sobre Σ∗: si x , y ∈ Σ∗ entonces xy ∈ Σ∗

|xy | = |x |+ |y |Asociativa: x(yz) = (xy)z = xyz

Existencia de elemento neutro: ε.xε = εx = x

No conmutativa: xy 6= yx

Ejemplo (Si Σ = {a, b, c})Si x = ab , y = bcc entonces xy = abbcc 6= bccab = yx

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 116 / 539

Page 117: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Potencia de una palabra)

Sea Σ = {σ1, σ2, · · · , σn}x = σi1σi2 · · ·σip ∈ Σ∗

La potencia “i-esima” de x se denota por x i

x i = xx · · · x︸ ︷︷ ︸i veces

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 117 / 539

Page 118: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo (Potencia una palabra definida sobre Σ = {a, b, c})Si x = abb entonces

x0 = ε

x1 = x = abb

x2 = xx = abbabb

x3 = xxx = abbabbabb

Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 118 / 539

Page 119: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Potencia de una palabra (version recursiva))

x0 = ε

x i = x x i−1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 119 / 539

Page 120: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la potencia de una de palabra

Operacion cerrada sobre Σ∗:si x ∈ Σ∗ entonces ∀i ∈ N, x i ∈ Σ∗

|x i | = i |x |

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 120 / 539

Page 121: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Operaciones con lenguajes formales

Union

Concatenacion

Potencia

Clausura o cierre de Kleene

Clausura positiva

Interseccion

Diferencia

Complementacion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 121 / 539

Page 122: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Union de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∪ L2 = {x |x ∈ L1 ∨ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∪ L2 = {ab, bc, bcc, a, abb, ac}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 122 / 539

Page 123: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Union de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∪ L2 = {x |x ∈ L1 ∨ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∪ L2 = {ab, bc, bcc, a, abb, ac}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 123 / 539

Page 124: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Union de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∪ L2 = {x |x ∈ L1 ∨ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∪ L2 = {ab, bc, bcc, a, abb, ac}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 124 / 539

Page 125: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la union de lenguajes

Operacion cerrada sobre Σ∗:si L1, L2 ⊆ Σ∗ entonces L1 ∪ L2 ⊆ Σ∗

Asociativa: L1 ∪ (L2 ∪ L3) = (L1 ∪ L2) ∪ L3 = L1 ∪ L2 ∪ L3

Conmutativa: L1 ∪ L2 = L2 ∪ L1

Existencia de elemento neutro: ∅L ∪ ∅ = ∅ ∪ L = L

Idempotente: L ∪ L = L

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 125 / 539

Page 126: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Concatenacion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entoncesL1L2 = {x |x = yz ∧ y ∈ L1 ∧ z ∈ L2}

Ejemplo

Si L1 = {ab, a, bb} y L2 = {bc, c , aa}entonces L1L2 = {abbc, abc, abaa, ac , aaa, bbbc, bbc, bbaa}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 126 / 539

Page 127: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Concatenacion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entoncesL1L2 = {x |x = yz ∧ y ∈ L1 ∧ z ∈ L2}

Ejemplo

Si L1 = {ab, a, bb} y L2 = {bc, c , aa}entonces L1L2 = {abbc, abc, abaa, ac , aaa, bbbc, bbc, bbaa}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 127 / 539

Page 128: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Concatenacion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entoncesL1L2 = {x |x = yz ∧ y ∈ L1 ∧ z ∈ L2}

Ejemplo

Si L1 = {ab, a, bb} y L2 = {bc, c , aa}entonces L1L2 = {abbc, abc, abaa, ac , aaa, bbbc, bbc, bbaa}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 128 / 539

Page 129: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la concatenacion de lenguajes

Operacion cerrada sobre Σ∗:si L1, L2 ⊆ Σ∗ entonces L1L2 ⊆ Σ∗

Asociativa: L1 (L2 L3) = (L1 L2)L3 = L1 L2 L3

Existencia de elemento neutro: Lε = {ε}L{ε} = {ε}L = L

No conmutativa: L1L2 6= L2L1

Nota

La concatenacion lenguajes formales no es conmutativa porque laconcatenacion de palabras tampoco lo es

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 129 / 539

Page 130: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la concatenacion de lenguajes

Operacion cerrada sobre Σ∗:si L1, L2 ⊆ Σ∗ entonces L1L2 ⊆ Σ∗

Asociativa: L1 (L2 L3) = (L1 L2)L3 = L1 L2 L3

Existencia de elemento neutro: Lε = {ε}L{ε} = {ε}L = L

No conmutativa: L1L2 6= L2L1

Nota

La concatenacion lenguajes formales no es conmutativa porque laconcatenacion de palabras tampoco lo es

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 130 / 539

Page 131: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Potencia de un lenguaje formal)

Si L ⊆ Σ∗ e i ∈ N entoncesLi = {x |x = xj1 · · · xji ∧ xj1 , · · · , xji ∈ L}

Ejemplo

L0 = {x0|x ∈ L} = {ε}L1 = L

L2 = LL

· · ·Li = LLi−1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 131 / 539

Page 132: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Potencia de un lenguaje formal)

Si L ⊆ Σ∗ e i ∈ N entoncesLi = {x |x = xj1 · · · xji ∧ xj1 , · · · , xji ∈ L}

Ejemplo

L0 = {x0|x ∈ L} = {ε}L1 = L

L2 = LL

· · ·Li = LLi−1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 132 / 539

Page 133: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la potencia de un lenguaje formal

Operacion cerrada sobre Σ∗:si L ⊆ Σ∗ entonces ∀i ∈ N Li ⊆ Σ∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 133 / 539

Page 134: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Clausura de Kleene de un lenguaje formal)

Si L ⊆ Σ∗ entonces

L∗ =⋃∞

i=0 Li = L0 ∪ L1 ∪ L2 ∪ · · ·

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 134 / 539

Page 135: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo

Si L = {a} entonces

L∗ =∞⋃i=0

Li

= L0 ∪ L1 ∪ L2 ∪ · · ·= {ε} ∪ {a} ∪ {aa} · · ·= {ε, a, aa, · · · }

L∗ = {a}∗ puede ser denotado por la expresion regular a∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 135 / 539

Page 136: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la clausura de un lenguaje formal

Operacion cerrada sobre Σ∗:si L ⊆ Σ∗ entonces L∗ ⊆ Σ∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 136 / 539

Page 137: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Clausura positiva de un lenguaje formal)

Si L ⊆ Σ∗ entoncesL+ =

⋃∞i=1 Li = L1 ∪ L2 ∪ · · ·

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 137 / 539

Page 138: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la clausura positiva de un lenguaje formal

Operacion cerrada sobre Σ∗:si L ⊆ Σ∗ entonces L+ ⊆ Σ∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 138 / 539

Page 139: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplos (Operaciones con lenguajes formales)

Si L1 = {a} y L2 = {b} entonces

L3 = L1L2 = {ab}L4 = L2L1 = {ba}L5 = L3 ∪ L4 = {ab, ba}

L6 = L∗5 =∞⋃i=0

Li5 = L0

5 ∪ L15 ∪ L2

5 ∪ · · ·

= {ε} ∪ {ab, ba} ∪ {abab, abba, baab, baba} · · ·= {ε, ab, ba, abab, abba, baab, baba, · · · }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 139 / 539

Page 140: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Interseccion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∩ L2 = {x |x ∈ L1 ∧ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∩ L2 = {bc}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 140 / 539

Page 141: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Interseccion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∩ L2 = {x |x ∈ L1 ∧ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∩ L2 = {bc}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 141 / 539

Page 142: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Interseccion de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 ∩ L2 = {x |x ∈ L1 ∧ x ∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 ∩ L2 = {bc}

Nota

No hay palabras o cadenas repetidas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 142 / 539

Page 143: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la interseccion de lenguajes

Operacion cerrada sobre Σ∗:si L1, L2 ⊆ Σ∗ entonces L1 ∩ L2 ⊆ Σ∗

Asociativa: L1 ∩ (L2 ∩ L3) = (L1 ∩ L2) ∩ L3 = L1 ∩ L2 ∩ L3

Conmutativa: L1 ∩ L2 = L2 ∩ L1

Existencia de elemento neutro: Σ∗

L ∩ Σ∗ = Σ∗ ∩ L = L

Idempotente: L ∩ L = L

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 143 / 539

Page 144: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Diferencia de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 − L2 = {x |x ∈ L1 ∧ x 6∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 − L2 = {ab, bcc}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 144 / 539

Page 145: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Diferencia de lenguajes formales)

Si L1, L2 ⊆ Σ∗ entonces

L1 − L2 = {x |x ∈ L1 ∧ x 6∈ L2}

Ejemplo

Si L1 = {ab, bc, bcc} y L2 = {a, bc, abb, ac}entonces L1 − L2 = {ab, bcc}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 145 / 539

Page 146: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la diferencia de lenguajes

Operacion cerrada sobre Σ∗:si L1, L2 ⊆ Σ∗ entonces L1 − L2 ⊆ Σ∗

No asociativa: (L1 − L2)− L3 6= L1 − (L2 − L3)

No conmutativa: L1 − L2 6= L2 − L1

No existencia de elemento neutro

No idempotente: L− L = ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 146 / 539

Page 147: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Definicion (Complementacion de un lenguaje formal)

Si L ⊆ Σ∗ entonces

L = Σ∗ − L = {x |x ∈ Σ∗ ∧ x 6∈ L}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 147 / 539

Page 148: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo

Si Σ = {a, b}Si L = {ε, a, ab, abb, abbb, . . .}entonces L = {b, aa, ba, bb, aaa, aab, . . .}

Ejemplo

∅ = Σ∗

Σ∗ = ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 148 / 539

Page 149: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Ejemplo

Si Σ = {a, b}Si L = {ε, a, ab, abb, abbb, . . .}entonces L = {b, aa, ba, bb, aaa, aab, . . .}

Ejemplo

∅ = Σ∗

Σ∗ = ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 149 / 539

Page 150: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosPalabras y lenguajes formales

Propiedades de la complementacion de lenguajes

Operacion cerrada sobre Σ∗:si L ⊆ Σ∗ entonces L ⊆ Σ∗

Doble complementacion L = L

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 150 / 539

Page 151: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicosDescripcion de los componentes lexicosPalabras y lenguajes formalesExpresiones Regulares

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 151 / 539

Page 152: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Definicion (Expresion regular)

Expresiones regulares sobre Σ = {σ1, σ2, · · · , σn}:1 ∅ es una expresion regular

2 ε es una expresion regular

3 Si σ ∈ Σ entonces σ es una expresion regular4 Si α y β son expresiones regulares entonces tambien son:

a) α + βb) α · βc) (α) (o (β))d) α∗ =

∑∞i=0 α

i = α0 + α1 + α2 + · · ·

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 152 / 539

Page 153: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Notas

La palabra vacıa se puede representar por ε o λ

La alternativa se puede representar por + o por |El punto de la concatenacion se suele omitir

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 153 / 539

Page 154: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplos (Expresiones regulares sobre Σ = {0, 1})∅, ε, 0, 1

0 + ε, ε+ 0, 0ε, ε0

1 + ε, ε+ 1, 1ε, ε1

0 + 0, 0 + 1, 1 + 0, 1 + 1

00, 01, 10, 11

0∗, 1∗

(0 + 1), (0 + 1)∗, 0∗(0 + 1)1∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 154 / 539

Page 155: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Prioridad de los operadores de las expresiones regulares

+ Maxima prioridad ( )

*

·- Mınima prioridad +

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 155 / 539

Page 156: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Definicion (Lenguaje denotado por una expresion regular)

1 L(∅) = ∅2 L(ε) = {ε}3 Si σ ∈ Σ entonces L(σ) = {σ}4 Si α y β son expresiones regulares sobre Σ

a) L(α + β) = L(α) ∪ L(β)b) L(α · β) = L(α) · L(β)c) L((α)) = L(α)d) L(α∗) = L(

∑∞i=0 α

i ) =⋃∞

i=0 L(αi ) =⋃∞

i=0(L(α))i

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 156 / 539

Page 157: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplos (Lenguajes denotados 1 / 5)

Dado Σ = {0, 1}L(0) = {0}L(0 + 1) = L(0) ∪ L(1) = {0} ∪ {1} = {0, 1}L(01) = L(0)L(1) = {0}{1} = {01}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 157 / 539

Page 158: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 2 / 5)

L(1∗) = L(∑∞

i=0 1i ) =⋃∞

i=0 L(1i )

=⋃∞

i=0(L(1))i =⋃∞

i=0{1}i

= {ε, 1, 11, 111, · · · }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 158 / 539

Page 159: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 2 / 5)

L(1∗) = L(∑∞

i=0 1i ) =⋃∞

i=0 L(1i )

=⋃∞

i=0(L(1))i =⋃∞

i=0{1}i

= {ε, 1, 11, 111, · · · }

Palabras compuestas por cero o mas unos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 159 / 539

Page 160: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 3 / 5)

L((0 + 1)1∗) = L((0 + 1))L(1∗)= L(0 + 1)L(1∗)= {0, 1}{ε, 1, 11, 111, · · · }= {0, 01, 011, 0111, · · · , 1, 11, 111, · · · }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 160 / 539

Page 161: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 3 / 5)

L((0 + 1)1∗) = L((0 + 1))L(1∗)= L(0 + 1)L(1∗)= {0, 1}{ε, 1, 11, 111, · · · }= {0, 01, 011, 0111, · · · , 1, 11, 111, · · · }

Palabras que comienza por cero o por uno y van seguidas por ceroo mas unos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 161 / 539

Page 162: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 4 / 5)

L(0∗(11)0∗) = L(0∗)L((11))L(0∗)= {ε, 0, 00, 000, · · · }{11}{ε, 0, 00, 000, · · · }= {11, 011, 0011, 00011, · · · }{ε, 0, 00, 000, · · · }= {11, 0110, 00110, · · · 00110, 001100, · · · }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 162 / 539

Page 163: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 4 / 5)

L(0∗(11)0∗) = L(0∗)L((11))L(0∗)= {ε, 0, 00, 000, · · · }{11}{ε, 0, 00, 000, · · · }= {11, 011, 0011, 00011, · · · }{ε, 0, 00, 000, · · · }= {11, 0110, 00110, · · · 00110, 001100, · · · }

Palabras que contienen a la cadena 11 y comienzan y terminan poruna secuencia de ceros, posiblemente nula

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 163 / 539

Page 164: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Lenguaje denotado 5 / 5)

Dado Σ = {a, b, c , · · · , z}

L(a + b + c + · · ·+ z) = L(a) ∪ L(b) ∪ L(c) ∪ · · · L(z)= {a} ∪ {b} ∪ {c} ∪ · · · ∪ {z}= {a, b, c , · · · , z}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 164 / 539

Page 165: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Definicion (Definicion regular)

Identificador que se asocia a una expresion regular

Puede ser utilizado para definir nuevas expresiones regulares

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 165 / 539

Page 166: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplos

letra = (a + b + c + · · ·+ z)

cifra = (0 + 1 + · · ·+ 9)

guion = −subrayado =

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 166 / 539

Page 167: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplos (Identificadores de lenguajes de programacion)

Pascal:letra (letra + cifra)∗

C:(subrayado + letra) (subrayado + letra + cifra)∗

Cobol:letra (letra + cifra + guion (letra + cifra))∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 167 / 539

Page 168: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplos (Numeros en el Lenguaje C)

numero = parte entera (ε+ parte decimal)donde

parte entera = cifra cifra∗

parte decimal= punto cifra∗(ε+ (E + e)(ε+ ”− ” + ” + ”)cifra cifra∗)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 168 / 539

Page 169: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota (Abreviaturas)

α? = α + ε = ε+ α

α+ = α α∗ = α∗α

Ejemplo (Numeros en el Lenguaje C)

numero = parte entera parte decimal?

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 169 / 539

Page 170: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota (Abreviaturas)

α? = α + ε = ε+ α

α+ = α α∗ = α∗α

Ejemplo (Numeros en el Lenguaje C)

numero = parte entera parte decimal?

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 170 / 539

Page 171: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota

Palabras claves: existe una expresion regular para cada palabraclave.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 171 / 539

Page 172: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en C 1/3)

COMPONENTE LEXICO: IF

Expresion regular: if

Paradigma: if

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 172 / 539

Page 173: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en C 2/3)

COMPONENTE LEXICO: WHILE

Expresion regular: while

Paradigma: while

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 173 / 539

Page 174: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en C 3/3)

COMPONENTE LEXICO: FOR

Expresion regular: for

Paradigma: for

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 174 / 539

Page 175: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en FORTRAN 1/3)

COMPONENTE LEXICO: DO

Expresion regular: (D+d)(O+o)

Paradigma: DO, Do, dO, do

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 175 / 539

Page 176: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en FORTRAN 2/3)

COMPONENTE LEXICO: FORMAT

Expresion regular: (F+f)(O+o)(R+r)(M+m)(A+a)(T+t)

Paradigma: FORMAT, . . . , Format, . . . , format

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 176 / 539

Page 177: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en FORTRAN 3/3)

COMPONENTE LEXICO: REAL

Expresion regular: (R+r)(E+e)(A+a)(L+l)

Paradigma: REAL, . . . , Real, . . . real

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 177 / 539

Page 178: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en Pascal 1/3)

COMPONENTE LEXICO: INTEGER

Expresion regular:(I+i)(N+n)(T+t)(E+e)(G+g)(E+e)(R+r)

Paradigma: INTEGER, . . . , Integer, . . . , integer

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 178 / 539

Page 179: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en Pascal 2/3)

COMPONENTE LEXICO: THEN

Expresion regular: (T+t)(H+h)(E+e)(N+n)

Paradigma: THEN, . . . , Then, . . . , then

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 179 / 539

Page 180: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Palabras claves en Pascal 3/3)

COMPONENTE LEXICO: VAR

Expresion regular: (V+v)(A+a)(R+r)

Paradigma: VAR, . . . , Var, . . . , var

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 180 / 539

Page 181: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores aritmeticos en C)

COMPONENTE LEXICO Expresion regular ParadigmaSUMA + +RESTA - -

MULTIPLICACION * *

DIVISION / /

RESTO DIVISION ENTERA % %

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 181 / 539

Page 182: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores aritmeticos en FORTRAN)

COMPONENTE LEXICO Expresion regular ParadigmaSUMA + +

RESTA - -

MULTIPLICACION * *

DIVISION / /

POTENCIA ** **

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 182 / 539

Page 183: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores aritmeticos en PASCAL)

COMPONENTE LEXICO Expresion regular ParadigmaSUMA + +

RESTA - -

MULTIPLICACION * *

DIVISION / /

RESTO DIVISION ENTERA mod mod

COCIENTE DIVISION ENTERA div div

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 183 / 539

Page 184: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores relacionales en C)

COMPONENTE LEXICO Expresion regular ParadigmaMENOR QUE < <

MENOR IGUAL QUE <= <=

MAYOR QUE > >

MAYOR IGUAL QUE >= >=

IGUAL == ==

DISTINTO != !=

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 184 / 539

Page 185: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores relacionales en FORTRAN)

COMPONENTE LEXICO Expresion regular ParadigmaMENOR QUE .(L+l)(T+t). .LT., . . . .lt.

MENOR IGUAL QUE .(L+l)(E+e). .LE., . . . .le.MAYOR QUE .(G+g)(T+t). .GT., . . . .gt.

MAYOR IGUAL QUE .(G+g)(E+e). .GE., . . . .ge.IGUAL .(E+e)(Q+q). .EQ., . . . .eq.

DISTINTO .(N+n)(E+e). .NE., . . . .ne.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 185 / 539

Page 186: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores relacionales en Pascal)

COMPONENTE LEXICO Expresion regular ParadigmaMENOR QUE < <

MENOR IGUAL QUE <= <=

MAYOR QUE > >

MAYOR IGUAL QUE >= >=

IGUAL = =

DISTINTO <> <>

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 186 / 539

Page 187: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores logicos en C)

COMPONENTE LEXICO Expresion regular Paradigma

NEGACION LOGICA ! !

CONJUNCION LOGICA && &&

DISYUNCION LOGICA || ||

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 187 / 539

Page 188: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores logicos en FORTRAN)

COMPONENTE LEXICO Expresion regular Paradigma

NEGACION LOGICA .(N+n)(O+o)(T+t). .NOT, . . . .not.

CONJUNCION LOGICA .(A+a)(N+n)(D+d). .AND.,. . . .and.

DISYUNCION LOGICA .(O+o)(R+r). .OR., . . . .or.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 188 / 539

Page 189: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo (Operadores logicos en PASCAL)

COMPONENTE LEXICO Expresion regular Paradigma

NEGACION LOGICA (N+n)(O+o)(T+t) NOT, . . . not

CONJUNCION LOGICA (A+a)(N+n)(D+d) AND, . . . and

DISYUNCION LOGICA (O+o)(R+r) OR, . . . or

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 189 / 539

Page 190: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota

El analizador sintactico solo necesita saber cual es elcomponente lexico reconocido

No necesita saber como es dicho componente lexico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 190 / 539

Page 191: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Definicion (Equivalencia de expresiones regulares)

α y β son equivalentes si y solo si denotan el mismo lenguaje:L(α) = L(β)

α ≡ β ⇐⇒ L(α) = L(β)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 191 / 539

Page 192: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Ejemplo

Se verifica queaa∗ ≡ a∗a

porqueL(aa∗) = L(a)L(a∗)

= {a}{ε, a, aa, · · · }= {a, aa, aaa, · · · }= {ε, a, aa, · · · }{a}= L(a∗)L(a)= L(a∗a)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 192 / 539

Page 193: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 193 / 539

Page 194: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 194 / 539

Page 195: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 195 / 539

Page 196: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 196 / 539

Page 197: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 197 / 539

Page 198: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 198 / 539

Page 199: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 199 / 539

Page 200: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

1.- Disyuncion idempotente: α + α = α

2.- Disyuncion asociativa: α + (β + γ) = (α + β) + γ

3.- Disyuncion conmutativa: α + β = β + α

4.- Concatenacion asociativa: α (β γ) = (α β) γ

5.- Concatenacion no conmutativa: α β 6= β α

6.- Distributiva: α (β + γ) = α β + α γ

7.- Elemento neutro de la disyuncion: α + ∅ = ∅+ α = α

8.- Elemento neutro de la concatenacion: αε = εα = α

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 200 / 539

Page 201: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 201 / 539

Page 202: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 202 / 539

Page 203: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 203 / 539

Page 204: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

L(∅∗) = (L(∅))∗ = (∅)∗=

⋃∞i=0 ∅i = ∅0 ∪ ∅1 ∪ ∅2 · · ·

= {ε} ∪ ∅ ∪ ∅ · · ·= {ε} = L(ε)

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 204 / 539

Page 205: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 205 / 539

Page 206: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 206 / 539

Page 207: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 207 / 539

Page 208: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Propiedades de las expresiones regulares

9.- α ∅ = ∅ α = ∅10.- ε∗ = ε

11.- ∅∗ = ε

12.- α∗ α∗ = α∗

13.- α α∗ = α∗ α = α+

14.- (α∗)∗ = α∗

15.- α∗ = ε + α α∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 208 / 539

Page 209: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Capacidad de las expresiones regulares

Denotan los componentes lexicos

Pueden denotar

+ Un numero fijo de repeticiones: aaaaa+ Un numero arbitrario de repeticiones: a∗

+ Repeticiones no coordinadas

Ejemplo

L1 = {ai bj |i , j ≥ 0}= {ε, a, aa, aaa, · · · b, ab, aab, · · · }= {ε, a, aa, aaa, · · · }{ε, b, bb, bbb}= L(a∗b∗)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 209 / 539

Page 210: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Capacidad de las expresiones regulares

Denotan los componentes lexicos

Pueden denotar

+ Un numero fijo de repeticiones: aaaaa+ Un numero arbitrario de repeticiones: a∗

+ Repeticiones no coordinadas

Ejemplo

L1 = {ai bj |i , j ≥ 0}= {ε, a, aa, aaa, · · · b, ab, aab, · · · }= {ε, a, aa, aaa, · · · }{ε, b, bb, bbb}= L(a∗b∗)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 210 / 539

Page 211: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota (Limitaciones de las expresiones regulares)

No pueden denotar caracterısticas sintacticas

No pueden denotar repeticiones coordinadas

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 211 / 539

Page 212: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota (Limitaciones de las expresiones regulares)

No pueden denotar caracterısticas sintacticas

No pueden denotar repeticiones coordinadas

Ejemplo

Lenguaje que no puede ser denotado por una expresion regular

L2 = {ai bi |i ≥ 0} = {ε, ab, aabb, aaabbb, · · · }

L2 no es un lenguaje regular.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 212 / 539

Page 213: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Especificacion de componentes lexicosExpresiones Regulares

Nota (Limitaciones de las expresiones regulares)

No pueden denotar caracterısticas sintacticas

No pueden denotar repeticiones coordinadas

Ejemplo

L2 = {ai bi |i ≥ 0} representa a muchas estructuras sintacticasde los lenguajes de programacion:

+ Balanceo de parentesis, llaves o corchetes.

+ Paso de parametros

+ Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 213 / 539

Page 214: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido del tema

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 214 / 539

Page 215: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicosAutomatas finitosAutomatas finitos deterministas: AFDAutomatas finitos NO deterministas: AFNMinimizacion de automatas finitos deterministas

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 215 / 539

Page 216: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 216 / 539

Page 217: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 217 / 539

Page 218: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 218 / 539

Page 219: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 219 / 539

Page 220: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 220 / 539

Page 221: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 221 / 539

Page 222: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

Expresiones regulares: denotan componentes lexicos.

Automatas finitos: reconocen componentes lexicos:

+ Automata finito no determinista: AFN+ Automata finito determinista: AFD

Generacion de automatas finitos a partir de expresionesregulares:

Paso 1.- Algoritmo de Thompson: genera un AFN a partir de unaexpresion regular

Paso 2.- Algoritmo de Construccion de subconjuntos: genera un AFDa partir de un AFN.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 222 / 539

Page 223: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

Expresiones regulares: denotan componentes lexicos.

Automatas finitos: reconocen componentes lexicos:

+ Automata finito no determinista: AFN+ Automata finito determinista: AFD

Generacion de automatas finitos a partir de expresionesregulares:

Paso 1.- Algoritmo de Thompson: genera un AFN a partir de unaexpresion regular

Paso 2.- Algoritmo de Construccion de subconjuntos: genera un AFDa partir de un AFN.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 223 / 539

Page 224: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos

Expresiones regulares: denotan componentes lexicos.

Automatas finitos: reconocen componentes lexicos:

+ Automata finito no determinista: AFN+ Automata finito determinista: AFD

Generacion de automatas finitos a partir de expresionesregulares:

Paso 1.- Algoritmo de Thompson: genera un AFN a partir de unaexpresion regular

Paso 2.- Algoritmo de Construccion de subconjuntos: genera un AFDa partir de un AFN.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 224 / 539

Page 225: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicosAutomatas finitosAutomatas finitos deterministas: AFDAutomatas finitos NO deterministas: AFNMinimizacion de automatas finitos deterministas

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 225 / 539

Page 226: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Funcion de transicion para palabras

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 226 / 539

Page 227: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Funcion de transicion para palabras

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 227 / 539

Page 228: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Definicion (Automata finito determinista: AFD)

Dispositivo formal que permite reconocer si una palabrapertenece o no a un lenguaje regular.

Tambien se denomina “maquina reconocedora o aceptadora”

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 228 / 539

Page 229: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Componentes de un AFD

Cinta de lectura:

+ Dividida en celdas.+ Infinita hacia la derecha.

Cabeza de lectura:

+ Lee el sımbolo actual de la cinta.+ Solo se puede mover hacia la derecha.

Alfabeto de la cinta

Unidad de control de estados: indica el estado actual.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 229 / 539

Page 230: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

σ

qi

Unidad de control de estados

Cabeza de lectura

Sentido de recorrido

... Cinta

Componentes basicos de un automata finito determinista.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 230 / 539

Page 231: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Pasos del AFD para reconocer a x = σi1 . . . σijσij+1. . . σik ∈ Σ∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 231 / 539

Page 232: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Pasos del AFD para reconocer a x = σi1 . . . σijσij+1. . . σik ∈ Σ∗

i 1σ ... σi j σ i j+1 ... σ i k ...

q0

Configuracion inicial

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 232 / 539

Page 233: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Pasos del AFD para reconocer a x = σi1 . . . σijσij+1. . . σik ∈ Σ∗

i 1σ ... σi j σ i j+1 ... σ i k ...

q

Transicion: situacion anterior

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 233 / 539

Page 234: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Pasos del AFD para reconocer a x = σi1 . . . σijσij+1. . . σik ∈ Σ∗

i 1σ ... σi j σ i j+1 ... σ i k ...

q’

Transicion: situacion posterior

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 234 / 539

Page 235: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Pasos del AFD para reconocer a x = σi1 . . . σijσij+1. . . σik ∈ Σ∗

i 1σ ... σi j σ i j+1 ... σ i k ...

qf

Configuracion final

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 235 / 539

Page 236: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Funcion de transicion para palabras

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 236 / 539

Page 237: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Definicion (Automata finito determinista)

A = (Q,Σ, δ, q0,F )

donde

Q: conjunto finito de estados

Σ: alfabeto de sımbolos de entrada

δ: funcion de transicion entre estados:

δ : Q × Σ −→ Qδ(q, σ) = q′

q0 ∈ Q: estado inicial

F ⊆ Q: conjunto de estados finales

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 237 / 539

Page 238: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce identificadores de COBOL)

δ l d g→ q0 q1 q3 q3

← q1 q1 q1 q2

q2 q1 q1 q3

q3 q3 q3 q3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 238 / 539

Page 239: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce identificadores de COBOL)

Los componentes del automata son:

Q = {q0, q1, q2, q3}F = {q1}El sımbolo “→” indica el estado inicial.

El sımbolo “←” indica los estados finales.

Σ = {l , d , g} donde: l = letra, d = dıgito y g = guion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 239 / 539

Page 240: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Funcion de transicion para palabras

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 240 / 539

Page 241: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Definicion (Funcion de transicion para palabras)

δ : Q × Σ∗ −→ Q

δ(q, ε) = q ∈ Q

δ(q, xσ) = δ(δ(q, x), σ) ∈ Q ∀x ∈ Σ∗ ∧ σ ∈ Σ

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 241 / 539

Page 242: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Notas

δ y δ coinciden sobre sımbolos de Σ:

δ(q, σ) = δ(q, ε · σ) = δ(δ(q, ε), σ) = δ(q, σ) ∀σ ∈ Σ

δ(q, xy) = δ(δ(q, x), y) ∀x , y ∈ Σ∗

δ(q, σx) = δ(δ(q, σ), x) = δ(δ(q, σ), x)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 242 / 539

Page 243: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo

δ(q0, x) = δ(q0, llgd) = δ(δ(q0, l), lgd)

= δ(q1, lgd) = δ(δ(q1, l), gd)

= δ(q1, gd) = δ(δ(q1, g), d)

= δ(q2, d) = δ(q2, d)

= q1 ∈ F

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 243 / 539

Page 244: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Nota

x = llgd es reconocida por el AFD porque q1 es un estado final.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 244 / 539

Page 245: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Nota

Existe una notacion mas simple para el reconocimiento de unAFD.

Ejemplo

(q0, l lgd) ` (q1, lgd)

` (q1, gd)

` (q2, d)

` (q1, ε)

o simplemente (q0, llgd) `∗ (q1, ε)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 245 / 539

Page 246: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Nota

Existe una notacion mas simple para el reconocimiento de unAFD.

Ejemplo

(q0, l lgd) ` (q1, lgd)

` (q1, gd)

` (q2, d)

` (q1, ε)

o simplemente (q0, llgd) `∗ (q1, ε)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 246 / 539

Page 247: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Nota

Existe una notacion mas simple para el reconocimiento de unAFD.

Ejemplo

(q0, l lgd) ` (q1, lgd)

` (q1, gd)

` (q2, d)

` (q1, ε)

o simplemente (q0, llgd) `∗ (q1, ε)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 247 / 539

Page 248: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 248 / 539

Page 249: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Definicion (Representacion grafica de un AFD)

Grafo dirigido:

Numero de nodos = cardinal(Q).

Etiqueta de cada nodo ∈ Q.

Estado inicial:q0

Estados finales:q

fq

f

Si δ(q, σ) = q′ entoncesq q’

σ

Se agrupan las aristas que enlazan los mismos estados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 249 / 539

Page 250: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce identificadores de COBOL)

g

l,d

lq

0 2q

1q

l, d

l, d, g

g

d, g

q3

Representacion grafica de un AFD.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 250 / 539

Page 251: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Descripcion general

Definicion formal

Representacion grafica

Lenguaje reconocido por un AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 251 / 539

Page 252: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Definicion (Lenguaje reconocido por un AFD)

L(A) = {x |x ∈ Σ∗ ∧ δ(q0, x) ∈ F}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 252 / 539

Page 253: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Notas

Si F = Q entonces L(A) = Σ∗

Si F = ∅ entonces L(A) = ∅q0 ∈ F si y solo si ε ∈ L(A)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 253 / 539

Page 254: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo

L(A) = L(l(l + d + g(l + d))∗)

Lenguaje reconocido por un AFD que reconoce identificadores deCOBOL

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 254 / 539

Page 255: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (Lenguaje reconocido por un AFD)

Funcion de transicion

δ a b→← q0 q0 q1

← q1 q2 q1

q2 q2 q2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 255 / 539

Page 256: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (Lenguaje reconocido por un AFD)

Los componentes del automata son:

Q = {q0, q1, q2}F = {q0, q1}Σ = {a, b, c}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 256 / 539

Page 257: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (Lenguaje reconocido por un AFD)

q0 2

q1

qb

a, bb

a

a

a · · · a b b · · · b

L(A) = L(a∗b∗)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 257 / 539

Page 258: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Nota

El estado q2 es inutil o superfluo

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 258 / 539

Page 259: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (Lenguaje reconocido por un AFD)

δ(q0, aabb) = δ(δ(q0, a), abb)

= δ(δ(q0, a), bb)

= δ(δ(q0, b), b)

= δ(q1, b)

= δ(q1, b)

= q1 ∈ F

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 259 / 539

Page 260: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (Lenguaje reconocido por un AFD)

(q0, aabb) ` (q0, abb)

` (q0, bb)

` (q1, b)

` (q1, ε)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 260 / 539

Page 261: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce identificadores de C)

Funcion de transicion

δ letra subrayado d ıgito→ q0 q1 q1 q2

← q1 q1 q1 q1

q2 q2 q2 q2

Nota

El estado q2 es superfluo

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 261 / 539

Page 262: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce identificadores de C)

q0

2q

dígito

letra, dígito, subrayado

q1

letra, dígito, subrayado

letra, subrayado

L(A) = L((letra + subrayado)(letra + subrayado + d ıgito)∗)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 262 / 539

Page 263: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos deterministas: AFD

Ejemplo (AFD que reconoce cadenas de caracteres)

q0

q2

\

q3

qb

1q ""

σ

σ

σ \ y "

σ

L(A) = L(”(letra + · · · )(BARRA” + letra + · · · )∗”)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 263 / 539

Page 264: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicosAutomatas finitosAutomatas finitos deterministas: AFDAutomatas finitos NO deterministas: AFNMinimizacion de automatas finitos deterministas

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 264 / 539

Page 265: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 265 / 539

Page 266: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 266 / 539

Page 267: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Automata finito NO determinista: AFN)

Un automota finito es no determinista si posee alguna de lassiguientes transiciones:

Transicion ε: no lee el sımbolo actual pero cambia de estadoTransicion multiple: puede cambiar a mas de un estado.

Estos tipos de transiciones no son excluyentes.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 267 / 539

Page 268: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 268 / 539

Page 269: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Automata finito NO determinista: AFN)

A = (Q,Σ, δ, q0,F )Q: conjunto finito de estados

Σ: alfabeto de sımbolos de entrada

δ: funcion de transicion entre estados:δ : Q × (Σ ∪ {ε}) −→ P(Q)

δ(q, ε) ⊆ Qδ(q, σ) ⊆ Q

q0 ∈ Q: estado inicial

F ⊆ Q: conjunto de estados finales

P(Q): conjunto de las partes de Q

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 269 / 539

Page 270: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Transicion (ε) trivial)

q ∈ δ(q, ε) ∀q ∈ Q

Nota

Las transiciones triviales siempre existen y se suponen tacitamentepor defecto.

Definicion (Transicion (ε) no trivial)

q′ ∈ δ(q, ε) ∧ q 6= q′

Nota

Si existen, estas transiciones se han de indicar expresamente.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 270 / 539

Page 271: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Transicion (ε) trivial)

q ∈ δ(q, ε) ∀q ∈ Q

Nota

Las transiciones triviales siempre existen y se suponen tacitamentepor defecto.

Definicion (Transicion (ε) no trivial)

q′ ∈ δ(q, ε) ∧ q 6= q′

Nota

Si existen, estas transiciones se han de indicar expresamente.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 271 / 539

Page 272: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Transicion (ε) trivial)

q ∈ δ(q, ε) ∀q ∈ Q

Nota

Las transiciones triviales siempre existen y se suponen tacitamentepor defecto.

Definicion (Transicion (ε) no trivial)

q′ ∈ δ(q, ε) ∧ q 6= q′

Nota

Si existen, estas transiciones se han de indicar expresamente.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 272 / 539

Page 273: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Transicion (ε) trivial)

q ∈ δ(q, ε) ∀q ∈ Q

Nota

Las transiciones triviales siempre existen y se suponen tacitamentepor defecto.

Definicion (Transicion (ε) no trivial)

q′ ∈ δ(q, ε) ∧ q 6= q′

Nota

Si existen, estas transiciones se han de indicar expresamente.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 273 / 539

Page 274: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

δ a b ε→ q0 {q1} ∅ {q0, q1}

q1 ∅ {q3, q4} {q1, q2}q2 ∅ {q5} {q2}q3 {q2} ∅ {q3}q4 {q4, q5} ∅ {q2, q4}

← q5 ∅ {q5} {q3, q5}

Las transiciones triviales se pueden omitir.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 274 / 539

Page 275: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Nota

Un AFD puede considerarse un caso especial de AFN:

No existen transiciones-ε no triviales.

y no existen transiciones multiples, es decir,

δ(q, σ) = {q′}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 275 / 539

Page 276: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 276 / 539

Page 277: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (AFN: representacion grafica)

Numero de nodos del grafo = cardinal(Q).

Etiqueta de cada nodo ∈ Q.

Estado inicial:q0

Estados finales:q

fq

f

Si q′ ∈ δ(q, σ) entoncesq q’

σ

Si q′ ∈ δ(q, ε) entoncesq q’

ε

Las aristas de las transiciones-ε triviales se pueden omitir.

Se agrupan las aristas que enlazan los mismos estados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 277 / 539

Page 278: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

qq q10

εa,

ε

ε

q3

ab

ε

ε

ε

q4

bq 5

b, ε

ε

a

a,ε

b

AFN con transiciones triviales

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 278 / 539

Page 279: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

qq q10

εa,2

ε

q3

ab

ε

q4

bq 5

b

ε

a

a

b

AFN sin transiciones triviales

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 279 / 539

Page 280: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 280 / 539

Page 281: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Funcion de transicion para palabras en un AFN:

+ Clausura - ε aplicada a estados+ Clausura - ε aplicada a conjuntos de estados+ Funcion de transicion para palabras: δ

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 281 / 539

Page 282: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Clausura - ε aplicada a estados)

clausura− ε : Q −→ P(Q)

Si q ∈ Q+ q ∈ clausura− ε(q)+ Si q′ ∈ clausura− ε(q) ∧ q′′ ∈ δ(q′, ε)

entonces q′′ ∈ clausura− ε(q)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 282 / 539

Page 283: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Clausura - ε aplicada a estados)

Segunda version

clausura− ε : Q −→ P(Q)

clausura− ε(q) = {q′|q′ ∈ Q ∧ ∃un camino de q a q’con las aristas etiquetadas con ε}

Nota

Siempre se verifica que q ∈ clausura− ε(q)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 283 / 539

Page 284: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplos (Clausura-ε de los estados del AFD anterior)

clausura− ε(q0) = {q0, q1, q2}clausura− ε(q1) = {q1, q2}clausura− ε(q2) = {q2}clausura− ε(q3) = {q3}clausura− ε(q4) = {q2, q4}clausura− ε(q5) = {q3, q5}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 284 / 539

Page 285: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Clausura - ε aplicada a conjuntos de estados)

clausura− ε : P(Q) −→ P(Q)

Si P ⊆ Q+ P ∈ clausura− ε(P)+ Si q′ ∈ clausura− ε(P) ∧ q′′ ∈ δ(q′, ε)

entonces q′′ ∈ clausura− ε(P)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 285 / 539

Page 286: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Clausura - ε aplicada a conjuntos de estados)

Segunda version

Si P ⊆ Q entonces

clausura− ε(P) =⋃q∈P

clausura− ε(q)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 286 / 539

Page 287: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Clausura-ε de un conjunto de estados)

clausura− ε({q1, q3}) =⋃

q∈{q1,q3}

clausura− ε(q)

= clausura− ε(q1) ∪ clausura− ε(q3)

= {q1, q2} ∪ {q3}= {q1, q2, q3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 287 / 539

Page 288: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Clausura-ε de un conjunto de estados)

clausura− ε({q0, q5}) =⋃

q∈{q0,q5}

clausura− ε(q)

= clausura− ε(q0) ∪ clausura− ε(q5)

= {q0, q1, q2} ∪ {q3, q5}= {q0, q1, q2, q3, q5}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 288 / 539

Page 289: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Funcion de transicion para palabras)

δ : Q × Σ∗ −→ P(Q)

δ(q, ε) = clausura− ε(q)

δ(q, xσ) = clausura− ε

( ⋃q′∈δ(q,x)

δ(q′, σ)

)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 289 / 539

Page 290: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Funcion de transicion para palabras)

En particular

+ δ(q, σ) = clausura− ε

( ⋃q′∈δ(q,ε)

δ(q′, σ)

)

= clausura− ε

( ⋃q′∈clausura−ε(q)

δ(q′, σ)

)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 290 / 539

Page 291: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 1 / 8)

δ(q0, x) = δ(q0, abb)

= clausura− ε

⋃q′∈δ(q0,ab)

δ(q′, b)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 291 / 539

Page 292: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 2 / 8)

δ(q0, ab) = clausura− ε

⋃q′∈δ(q0,a)

δ(q′, b)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 292 / 539

Page 293: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 3 / 8)

δ(q0, a) = clausura− ε

⋃q′∈δ(q0,ε)

δ(q′, a)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 293 / 539

Page 294: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 4 / 8)

δ(q0, ε) = clausura− ε(q0)

= {q0, q1, q2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 294 / 539

Page 295: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 5 / 8)

Se sustituye δ(q0, ε) en δ(q0, a):

δ(q0, a) = clausura− ε

( ⋃q′∈δ(q0,ε)

δ(q′, a)

)

= clausura− ε

( ⋃q′∈{q0,q1,q2}

δ(q′, a)

)

= clausura− ε(δ(q0, a) ∪ δ(q1, a) ∪ δ(q2, a))= clausura− ε({q1} ∪ ∅ ∪ ∅)= {q1, q2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 295 / 539

Page 296: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 6 / 8)

Se sustituye δ(q0, a) en δ(q0, ab):

δ(q0, ab) = clausura− ε

( ⋃q′∈δ(q0,a)

δ(q′, b)

)

= clausura− ε

( ⋃q′∈{q1,q2}

δ(q′, b)

)= clausura− ε(δ(q1, b) ∪ δ(q2, b))= clausura− ε({q3, q4} ∪ {q5})= clausura− ε({q3, q4, q5})= {q2, q3, q4, q5}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 296 / 539

Page 297: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 7 / 8)

Por ultimo, se sustituye δ(q0, ab) en δ(q0, abb):

δ(q0, abb) = clausura− ε

( ⋃q′∈δ(q0,ab)

δ(q′, b)

)

= clausura− ε

( ⋃q′∈{q2,q3,q4,q5}

δ(q′, b)

)

= clausura− ε(δ(q2, b) ∪ δ(q3, b) ∪ δ(q4, b) ∪ δ(q5, b))= clausura− ε({q5} ∪ ∅ ∪ ∅ ∪ {q5})= clausura− ε({q5}) = {q3, q5}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 297 / 539

Page 298: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Reconocimiento de una palabra: 8 / 8)

x = abb ∈ L(A) porque

δ(q0, abb) ∩ F = {q3, q5} ∩ F = {q5} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 298 / 539

Page 299: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 299 / 539

Page 300: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Lenguaje reconocido por un AFN)

L(A) = {x |x ∈ Σ∗ ∧ δ(q0, x) ∩ F 6= ∅}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 300 / 539

Page 301: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 301 / 539

Page 302: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Necesidad de convertir AFN en AFD

Calcular δ(q0, x) en un AFN es muy tedioso.

Se suele evitar el uso de AFN.

AFN y AFD tienen la misma capacidad de reconocimiento.

Paso de AFN a AFD: algoritmo de Construccion desubconjuntos.

Se ha de extender la definicion de la funcion de transicion asubconjuntos de Q.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 302 / 539

Page 303: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Definicion (Extension de δ a subconjuntos de Q)

δ : P(Q)× (Σ ∪ {ε}) −→ P(Q)δ(P, σ) =

⋃q∈P

δ(q, σ)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 303 / 539

Page 304: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Aplicacion de δ a p ⊆ Q)

Sea el AFN anterior y p = {q0, q3}:

δ(p, a) = δ({q0, q3}, a)

=⋃

q∈{q0,q3}

δ(q, a)

= δ(q0, a) ∪ δ(q3, a)

= {q1} ∪ {q2}= {q1, q2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 304 / 539

Page 305: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Teorema

Dado un AFN AN , se puede construir otro AFD AD equivalente:

L(AN) = L(AD)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 305 / 539

Page 306: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 306 / 539

Page 307: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 307 / 539

Page 308: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 308 / 539

Page 309: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

Algoritmo (Construccion de subconjuntos)

Entrada: AN = (QN ,Σ, δN , q0,FN)

Salida: AD = (QD ,Σ, δD , p0,FD)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 309 / 539

Page 310: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Algoritmo (Construccion de subconjuntos)

inicio

p0 ← clausura− ε(q0) ; QD ← {p0} y p0 no marcado

mientras haya un estado p ∈ QD no marcado hacer

Marcar a p

para cada σ ∈ Σ hacerp′ ← clausura− ε(δN(p, σ))si p′ /∈ QD entonces

QD ← QD ∪ {p′} y p′ no marcadofin si

Definir δD(p, σ)← p′

fin para

fin mientras

FD ← {pi |FN ∩ pi 6= ∅}fin

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 310 / 539

Page 311: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

qq q10

εa,

ε

ε

q3

ab

ε

ε

ε

q4

bq 5

b, ε

ε

a

a,ε

b

AFN con transiciones triviales

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 311 / 539

Page 312: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

qq q10

εa,2

ε

q3

ab

ε

q4

bq 5

b

ε

a

a

b

AFN sin transiciones triviales

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 312 / 539

Page 313: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 0: Estado inicial del AFD:

p0 = clausura− ε(q0) = {q0, q1, q2}QD = {p0}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 313 / 539

Page 314: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p0

Paso 0: estado inicial p0

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 314 / 539

Page 315: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 1: Transiciones de p0 = {q0, q1, q2}

Se marca el estado p0:QD = {p

0}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 315 / 539

Page 316: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 1: Transiciones de p0 = {q0, q1, q2}clausura− ε(δN(p0, a)) =

= clausura− ε(⋃q∈p0

δN(q, a))

= clausura− ε(⋃

q∈{q0,q1,q2}

δN(q, a))

= clausura− ε(δN(q0, a) ∪ δN(q1, a) ∪ δN(q2, a))

= clausura− ε({q1} ∪ ∅ ∪ ∅)= clausura− ε({q1}) = {q1, q2} = p1

Por tanto, δD(p0, a) = p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 316 / 539

Page 317: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 1: Transiciones de p0 = {q0, q1, q2}

Como p1 /∈ QD :

QD = QD ∪ {p1} = {p0, p1}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 317 / 539

Page 318: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 1: Transiciones de p0 = {q0, q1, q2}clausura− ε(δN(p0, b)) =

= clausura− ε(⋃q∈p0

δN(q, b))

= · · ·= clausura− ε(δN(q0, b) ∪ δN(q1, b) ∪ δN(q2, b))

= clausura− ε(∅ ∪ {q3, q4} ∪ {q5})= clausura− ε({q3, q4, q5})= {q2, q3, q4, q5} = p2

δD(p0, b) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 318 / 539

Page 319: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 1: Transiciones de p0 = {q0, q1, q2}

Como p2 /∈ QD :

QD = QD ∪ {p2} = {p0, p1, p2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 319 / 539

Page 320: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p 0

p1

p2

a

b

Paso 1: transiciones de p0

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 320 / 539

Page 321: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 2: Transiciones de p1 = {q1, q2}

Se marca el estado p1:

QD = {p0, p

1, p2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 321 / 539

Page 322: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 2: Transiciones de p1 = {q1, q2}

clausura− ε(δN(p1, a)) = clausura− ε(⋃q∈p1

δN(q, a))

= · · ·= clausura− ε(δN(q1, a) ∪ δN(q2, a))

= clausura− ε(∅ ∪ ∅)= clausura− ε(∅) = ∅

Por tanto, δD(p1, a) = − , es decir, esta indefinida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 322 / 539

Page 323: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 2: Transiciones de p1 = {q1, q2}

clausura− ε(δN(p1, b)) = clausura− ε(⋃q∈p1

δN(q, b))

= · · ·= clausura− ε(δN(q1, b) ∪ δN(q2, b))

= clausura− ε({q3, q4} ∪ {q5})= clausura− ε({q3, q4, q5})= {q2, q3, q4, q5} = p2

δD(p1, b) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 323 / 539

Page 324: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p 0

p1

p2

a

bb

Paso 2: transiciones de p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 324 / 539

Page 325: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 3: Transiciones de p2 = {q2, q3, q4, q5}

Se marca el estado p2:

QD = {p0, p

1, p

2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 325 / 539

Page 326: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 3: Transiciones de p2 = {q2, q3, q4, q5}

clausura− ε(δN(p2, a)) = clausura− ε(⋃q∈p2

δN(q, a))

= clausura− ε(⋃

{q2,q3,q4,q5}

δN(q, a))

= clausura− ε(δN(q2, a) ∪ · · · ∪ δN(q5, a))

= clausura− ε(∅ ∪ {q2} ∪ {q4, q5} ∪ ∅)= clausura− ε({q2, q4, q5})= {q2, q3, q4, q5} = p2

δD(p2, a) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 326 / 539

Page 327: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 3: Transiciones de p2 = {q2, q3, q4, q5}

clausura− ε(δN(p2, b)) = clausura− ε(⋃q∈p2

δN(q, b))

= clausura− ε(⋃

{q2,q3,q4,q5}

δN(q, a))

= clausura− ε(δN(q2, b) ∪ · · · ∪ δN(q5, b))

= clausura− ε({q5} ∪ ∅ ∪ ∅ ∪ {q5})= clausura− ε({q5})= {q3, q5} = p3

δD(p2, b) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 327 / 539

Page 328: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 3: Transiciones de p2 = {q2, q3, q4, q5}

Como p3 /∈ QD

QD = {p0, p

1, p

2, p3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 328 / 539

Page 329: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p 0

p1

p2

a

bb

a

bp3

Paso 3: transiciones de p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 329 / 539

Page 330: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 4: Transiciones de p3 = {q3, q5}

Se marca el estado p3:

QD = {p0, p

1, p

2, p

3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 330 / 539

Page 331: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 4: Transiciones de p3 = {q3, q5}

clausura− ε(δN(p3, a)) = clausura− ε(⋃q∈p3

δN(q, a))

= · · ·= clausura− ε(δN(q3, a) ∪ δN(q5, a))

= clausura− ε({q2} ∪ ∅)= clausura− ε({q2})= {q2} = p4

δD(p3, a) = p4

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 331 / 539

Page 332: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 4: Transiciones de p3 = {q3, q5}

Como p4 /∈ QD

QD = {p0, p

1, p

2, p

3, p4}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 332 / 539

Page 333: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 4: Transiciones de p3 = {q3, q5}

clausura− ε(δN(p3, b)) = clausura− ε(⋃q∈p3

δN(q, b))

= · · ·= clausura− ε(δN(q3, b) ∪ δN(q5, b))

= clausura− ε(∅ ∪ {q5})= clausura− ε({q5})= {q3, q5} = p3

δD(p3, b) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 333 / 539

Page 334: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p 0

p1

p2

a

bb

a

bp3

b

pa4

Paso 4: transiciones de p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 334 / 539

Page 335: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 5: Transiciones de p4 = {q2}

Se marca el estado p4

QD = {p0, p

1, p

2, p

3, p

4}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 335 / 539

Page 336: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 5: Transiciones de p4 = {q2}

clausura− ε(δN(p4, a)) = clausura− ε(⋃q∈p4

δN(q, a))

= · · ·= clausura− ε(δN(q2, a))

= clausura− ε(∅) = ∅

δD(p4, a) = −

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 336 / 539

Page 337: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Paso 5: Transiciones de p4 = {q2}

clausura− ε(δN(p4, b)) = clausura− ε(⋃q∈p4

δN(q, b))

= · · ·= clausura− ε(δN(q2, b))

= clausura− ε({q5})= {q3, q5} = p3

δ(p4, b) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 337 / 539

Page 338: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Nota

El algoritmo finaliza al estar marcados todos los estados de QD .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 338 / 539

Page 339: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

p 0

p1

p2

a

bb

a

bp3

b

p4

a

b

Paso 5: transiciones de p4

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 339 / 539

Page 340: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

La funcion de transicion del AFD es:

δ a b→ p0 p1 p2

p1 − p2

← p2 p2 p3

← p3 p4 p3

p4 − p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 340 / 539

Page 341: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Los dos unicos estados finales son p2 y p3 porque

p2 ∩ FN = {q2, q3, q4, q5} ∩ {q5} = {q5} 6= ∅

p3 ∩ FN = {q3, q5} ∩ {q5} = {q5} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 341 / 539

Page 342: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

qq q10

εa,

ε

ε

q3

ab

ε

ε

ε

q4

bq 5

b, ε

ε

a

a,ε

b

AFN con transiciones triviales que se ha transformado en AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 342 / 539

Page 343: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Construccion de AFD a partir de AFN)

Analisis de x = abb usando el AFD construido:

(p0, abb) ` (p1, bb)

` (p2, b)

` (p3, ε)

x ∈ L(AD) porque p3 ∈ FD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 343 / 539

Page 344: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Descripcion general

Definicion formal

Representacion grafica

Funcion de transicion para palabras

Lenguaje reconocido por un AFN

Equivalencia entre AFN y AFD

Equivalencia entre expresiones regulares y automatas finitos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 344 / 539

Page 345: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

AFN

Algoritmo de Construccion de subconjuntos

AFD

EXPRESION REGULAR

Algoritmo de Thompson

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 345 / 539

Page 346: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

AFN

Algoritmo de Construccion de subconjuntos

AFD

EXPRESION REGULAR

Algoritmo de Thompson

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 346 / 539

Page 347: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

AFN

Algoritmo de Construccion de subconjuntos

AFD

EXPRESION REGULAR

Algoritmo de Thompson

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 347 / 539

Page 348: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

AFN

Algoritmo de Construccion de subconjuntos

AFD

EXPRESION REGULAR

Algoritmo de Thompson

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 348 / 539

Page 349: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

AFN

Algoritmo de Construccion de subconjuntos

AFD

EXPRESION REGULAR

Algoritmo de Thompson

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 349 / 539

Page 350: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Teorema

Dada una expresion regular α, se puede construir un AFN AN

equivalente:L(α) = L(AN)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 350 / 539

Page 351: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 351 / 539

Page 352: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 352 / 539

Page 353: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 353 / 539

Page 354: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Demostracion

Algoritmo (Thompson)

Entrada: expresion regular α.

Salida: AFN AN = (QN ,Σ, δN , q0,FN)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 354 / 539

Page 355: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

q q0 f

AFN equivalente a la expresion regular ∅.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 355 / 539

Page 356: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

ε

q q0 f

AFN equivalente a la expresion regular ε.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 356 / 539

Page 357: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

σ

q qf0

AFN equivalente a la expresion regular σ.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 357 / 539

Page 358: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

ε

ε

ε

ε

A

A

Nuevo estado inicial

q0 q f

q qf

qqf0

0

Nuevo estado final

β

α

β β

α α

AFN equivalente a la expresion regular α + β.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 358 / 539

Page 359: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

Estado inicial

A βε

αA

Estado final

q0 q 0qfq

fα βα β

AFN equivalente a la expresion regular αβ.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 359 / 539

Page 360: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

Nuevo estado inicial

ε

εεA

αq

0q f

q0

α α

q f

Nuevo estado final

ε

AFN equivalente a la expresion regular α∗.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 360 / 539

Page 361: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Algoritmo (Thompson)

Nota

L((α)) = L(α) = L(AN)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 361 / 539

Page 362: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Thompson)

AFN equivalente a α = l(l + d)∗

l

Paso 1: AFN equivalente a l

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 362 / 539

Page 363: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Thompson)

AFN equivalente a α = l(l + d)∗

d

Paso 2: AFN equivalente a d

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 363 / 539

Page 364: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Thompson)

AFN equivalente a α = l(l + d)∗

ε

εl

d

ε

ε

Paso 3: AFN equivalente a l + d

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 364 / 539

Page 365: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Thompson)

AFN equivalente a α = l(l + d)∗

ε

εl

d ε

εε

ε

ε

ε

Paso 4: AFN equivalente a (l + d)∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 365 / 539

Page 366: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Thompson)

AFN equivalente a α = l(l + d)∗

ε

ε

l

d ε

ε

ε

ε

ε

ε

q q q

q

q

q

q

q q1 3

4

5

6

7

8 9l εq

0 2

Paso 5: AFN equivalente a l(l + d)∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 366 / 539

Page 367: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 367 / 539

Page 368: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 368 / 539

Page 369: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 369 / 539

Page 370: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 370 / 539

Page 371: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

EXPRESION REGULAR

Algoritmo de Thompson

AFN

Algoritmo de Construccion de subconjuntos

AFD

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 371 / 539

Page 372: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (Algoritmo de Construccion de subconjuntos)

AFN equivalente a α = l(l + d)∗

ε

ε

l

d ε

ε

ε

ε

ε

ε

q q q

q

q

q

q

q q1 3

4

5

6

7

8 9l εq

0 2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 372 / 539

Page 373: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 0: Estado inicial del AFD:

p0 = clausura− ε(q0) = {q0}QD = {p0}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 373 / 539

Page 374: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

p0

Paso 0: estado inicial p0

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 374 / 539

Page 375: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 1: Transiciones de p0 = {q0}

Se marca el estado p0:QD = {p

0}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 375 / 539

Page 376: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 1: Transiciones de p0 = {q0}clausura− ε(δN(p0, l)) =

= clausura− ε(⋃q∈p0

δN(q, l))

= clausura− ε(⋃

q∈{q0}

δN(q, l))

= clausura− ε(δN(q0, l))

= clausura− ε({q1})= {q1, q2, q3, q4, q5, q9} = p1

Por tanto, δD(p0, l) = p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 376 / 539

Page 377: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 1: Transiciones de p0 = {q0}

Como p1 /∈ QD :

QD = QD ∪ {p1} = {p0, p1}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 377 / 539

Page 378: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 1: Transiciones de p0 = {q0}clausura− ε(δN(p0, d)) =

= clausura− ε(⋃q∈p0

δN(q, d))

= clausura− ε(⋃

q∈{q0}

δN(q, d))

= clausura− ε(δN(q0, d)))

= clausura− ε(∅)= ∅

δD(p0, d) = −

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 378 / 539

Page 379: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

p 0 1

lp

Paso 1: transiciones de p0

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 379 / 539

Page 380: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 2: Transiciones de p1 = {q1, q2, q3, q4, q5, q9}

Se marca el estado p1:

QD = {p0, p

1}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 380 / 539

Page 381: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 2: Transiciones de p1 = {q1, q2, q3, q4, q5, q9}

clausura− ε(δN(p1, l)) = clausura− ε(⋃q∈p1

δ(q, l))

= · · ·= clausura− ε(δN(q1, l) ∪ · · · ∪ δN(q9, l))

= clausura− ε(∅ ∪ ∅ ∪ ∅ ∪ {q6} ∪ ∅)= clausura− ε({q6})= {q3, q4, q5, q6, q8, q9} = p2

Por tanto, δD(p1, l) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 381 / 539

Page 382: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 2: Transiciones de p1 = {q1, q2, q3, q4, q5, q9}

Como p2 /∈ QD :

QD = QD ∪ {p2} = {p0, p

1, p2}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 382 / 539

Page 383: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 2: Transiciones de p1 = {q1, q2, q3, q4, q5, q9}

clausura− ε(δN(p1, d)) = clausura− ε(⋃q∈p1

δ(q, d))

= · · ·= clausura− ε(δN(q1, d) ∪ · · · ∪ δN(q9, d))

= clausura− ε(∅ ∪ ∅ ∪ ∅ ∪ {q7} ∪ ∅)= clausura− ε({q7})= {q3, q4, q5, q7, q8, q9} = p3

Por tanto, δD(p1, d) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 383 / 539

Page 384: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 2: Transiciones de p1 = {q1, q2, q3, q4, q5, q9}

Como p3 /∈ QD :

QD = QD ∪ {p3} = {p0, p

1, p2, p3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 384 / 539

Page 385: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

p 0 1

lp

l

d

p

p

2

3

Paso 2: transiciones de p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 385 / 539

Page 386: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 3: Transiciones de p2 = {q3, q4, q5, q6, q8, q9}

Se marca el estado p2:

QD = {p0, p

1, p

2, p3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 386 / 539

Page 387: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 3: Transiciones de p2 = {q3, q4, q5, q6, q8, q9}

clausura− ε(δN(p2, l)) = clausura− ε(⋃q∈p2

δN(q, l))

= · · ·= clausura− ε(δN(q3, l) ∪ · · · ∪ δN(q9, l))

= clausura− ε(∅ ∪ {q6} ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅)= clausura− ε({q6})= {q3, q4, q5, q6, q8, q9} = p2

δD(p2, l) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 387 / 539

Page 388: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 3: Transiciones de p2 = {q3, q4, q5, q6, q8, q9}

clausura− ε(δN(p2, d)) = clausura− ε(⋃q∈p2

δN(q, d))

= · · ·= clausura− ε(δN(q3, d) ∪ · · · ∪ δN(q9, d))

= clausura− ε(∅ ∪ ∅ ∪ {q7} ∪ ∅ ∪ ∅ ∪ ∅)= clausura− ε({q7})= {q3, q4, q5, q7, q8, q9} = p3

δD(p2, d) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 388 / 539

Page 389: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

p 0 1

lp

l

d

p

p

2

3

l

d

Paso 3: transiciones de p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 389 / 539

Page 390: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 4: Transiciones de p3 = {q3, q4, q5, q7, q8, q9}

Se marca el estado p3:

QD = {p0, p

1, p

2, p

3}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 390 / 539

Page 391: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 4: Transiciones de p3 = {q3, q4, q5, q7, q8, q9}

clausura− ε(δ(p3, l)) = clausura− ε(⋃q∈p3

δ(q, l))

= clausura− ε(δN(q3, l) ∪ · · · ∪ δN(q9, l))

= clausura− ε(∅ ∪ {q6} ∪ ∅ ∪ ∅ ∪ ∅ ∪ ∅)= clausura− ε({q6})= {q3, q4, q5, q6, q8, q9} = p2

δD(p3, l) = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 391 / 539

Page 392: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Paso 4: Transiciones de p3 = {q3, q4, q5, q7, q8, q9}

clausura− ε(δ(p3, d)) = clausura− ε(⋃q∈p3

δ(q, d))

= clausura− ε(δN(q3, d) ∪ · · · ∪ δN(q8, d))

= clausura− ε(∅ ∪ ∅ ∪ {q7} ∪ ∅ ∪ ∅ ∪ ∅)= clausura− ε({q7})= {q3, q4, q5, q7, q8, q9} = p3

δD(p3, d) = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 392 / 539

Page 393: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

p 0 1

lp

l

d

p

p

2

3

l

l

d

d

Paso 4: transiciones de p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 393 / 539

Page 394: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Nota

El algoritmo finaliza al estar marcados todos los estados de QD .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 394 / 539

Page 395: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Funcion de transicion del AFDδ l d

→ p0 p1 −← p1 p2 p3

← p2 p2 p3

← p3 p2 p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 395 / 539

Page 396: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo (α = l(l + d)∗: paso de AFN a AFD)

Estados finales: p1, p2 y p3

p1 ∩ FN = {q1, q2, q3, q4, q5, q9} ∩ {q9} = {q9} 6= ∅

p2 ∩ FN = {q3, q4, q5, q6, q8, q9} ∩ {q9} = {q9} 6= ∅

p3 ∩ FN = {q3, q4, q5, q7, q8, q9} ∩ {q9} = {q9} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 396 / 539

Page 397: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosAutomatas finitos NO deterministas: AFN

Ejemplo

q 0 1

lq

l, d

AFD mas simple y equivalente a α = l(l + d)∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 397 / 539

Page 398: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicosAutomatas finitosAutomatas finitos deterministas: AFDAutomatas finitos NO deterministas: AFNMinimizacion de automatas finitos deterministas

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 398 / 539

Page 399: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Definicion

Dos automatas son equivalentes si reconocen el mismo lenguaje:

A ≡ A′ ⇔ L(A) = L(A′)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 399 / 539

Page 400: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Razones para minimizar un AFD

Un lenguaje regular puede ser reconocido por variosautomatas finitos deterministas equivalentes.

Se debe usar el AFD con el menor numero de estados.

La Minimizacion permite generar el AFD que reconoce unlenguaje regular con el menor numero de estados.

La minimizacion esta basada en una relacion deequivalencia entre estados.

El automata cociente de la relacion de equivalencia es elAFD mınimo.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 400 / 539

Page 401: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Definicion (Equivalencia entre estados)

Se dice que dos estados q, q′ ∈ Q son equivalentes (qEq′) si severifica que:

∀x ∈ Σ∗ (δ(q, x) ∈ F ⇔ δ(q′, x) ∈ F )

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 401 / 539

Page 402: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

E es una relacion de quivalencia

∀x ∈ Σ∗ ∧ ∀q, q′ ∈ Q:

Reflexiva: qEq δ(q, x) ∈ F ⇔ δ(q, x) ∈ F

Simetrica: qEq′ =⇒ q′Eq

(δ(q, x) ∈ F ⇔ δ(q′, x) ∈ F ) =⇒ (δ(q′, x) ∈ F ⇔ δ(q, x) ∈ F )

Transitiva: qEq′ ∧ q′Eq′′ =⇒ qEq′′

(δ(q, x) ∈ F ⇔ δ(q′, x) ∈ F )

(δ(q′, x) ∈ F ⇔ δ(q′′, x) ∈ F )

}⇒ (δ(q, x) ∈ F ⇔ δ(q′′, x) ∈ F )

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 402 / 539

Page 403: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Definicion (Clase de equivalencia de un estado)

Si q ∈ Q, la clase de equivalencia de q respecto de la relacion Ese define como:

E [q] = {q′|qEq′} = {q′ | ∀x ∈ Σ∗ (δ(q, x) ∈ F ⇔ δ(q′, x) ∈ F )}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 403 / 539

Page 404: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Propiedades de la relacion de equivalencia E

∀q ∈ Q q ∈ E [q]

Si q′ /∈ E [q] entonces E [q′] ∩ E [q] = ∅Q =

⋃q∈Q

E [q]

|Q|E | ≤ |Q|

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 404 / 539

Page 405: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Definicion (Automata cociente)

A|E = (Q|E ,Σ, δ|E ,E [q0],F|E )

Q|E = {E [q]|q ∈ Q}

La funcion de transicion δ|E se define como:

δ|E : Q|E × Σ −→ Q|E

δ|E (p, σ) = p′ ∈ Q|E ⇐⇒

∃q, q′ ∈ Qp = E [q] ∧ p′ = E [q′]∧ δ(q, σ) = q′

E [q0] es el estado inicial y

F|E = {E [qf ]|qf ∈ F},

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 405 / 539

Page 406: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Nota

La funcion δ|E se define de manera similar a δ.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 406 / 539

Page 407: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Teorema

Todo AFD es equivalente a su automata cociente:

L(A) = L(A|E )

Demostracion

x ∈ L(A) ⇔ δ(q0, x) ∈ F

⇔ ∃qf ∈ F δ(q0, x) = qf

⇔ p0 = E [q0] ∧ ∃qf ∈ F pf = E [qf ] ∧ δ|E (p0, x) = pf

⇔ δ|E (p0, x) = pf ∈ F|E⇔ x ∈ L(A|E )

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 407 / 539

Page 408: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Teorema

Todo AFD es equivalente a su automata cociente:

L(A) = L(A|E )

Demostracion

x ∈ L(A) ⇔ δ(q0, x) ∈ F

⇔ ∃qf ∈ F δ(q0, x) = qf

⇔ p0 = E [q0] ∧ ∃qf ∈ F pf = E [qf ] ∧ δ|E (p0, x) = pf

⇔ δ|E (p0, x) = pf ∈ F|E⇔ x ∈ L(A|E )

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 408 / 539

Page 409: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Demostracion

Algoritmo (Construccion del Automata Cociente)

Entrada: A = (Q,Σ, δ, q0,F ).

Salida: A|E = (Q|E ,Σ, δ|E ,E [q0],F|E ), Automata cociente

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 409 / 539

Page 410: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Algoritmo (Construccion del Automata Cociente)

iniciop0 ← Q − F , p1 ← FNuevo ← {p0, p1} y p0 y p1 no marcadosmientras ∃p ∈ Nuevo no marcado hacer

Marcar a ppara cada σ ∈ Σ hacer

Dividir p en subconjuntos de forma que sus estadosqi y qj estaran en el mismo subconjuntosi δ(qi , σ) y δ(qj , σ) pertenecen al mismo subconjunto

fin parasi se ha dividido p en subconjuntos

entoncesSustituir p por los nuevos subconjuntosDesmarcar todos los estados de Nuevo

fin sifin mientras

fin

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 410 / 539

Page 411: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

q 0 1

lq

l

d

q

q

2

3

ld

d

l

AFD original que reconoce identificadores de Pascal.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 411 / 539

Page 412: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

Estados no finales: p0 = Q − F = {q0}Estados finales: p1 = F = {q1, q2, q3}Nuevo = {p0, p1}Los estados de Nuevo no estan marcados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 412 / 539

Page 413: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

Paso 1: Analisis de p0 = {q0}Se marca p0: Nuevo = {p

0, p1}

p0 solo contiene un estado y no se puede descomponer mas.

Transiciones “provisionales” de p0:

δ|E (p0, l) = E [δ(q0, l)] = E [q1] = p1

δ|E (p0, d) = E [δ(q0, d)] = E [−] = −

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 413 / 539

Page 414: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

Paso 2: Analisis de p1 = {q1, q2, q3}Se marca p1: Nuevo = {p

0, p

1}

Se comprueban que los estados de p1 son homogeneos:

p1 l d

q1 p1 p1

q2 p1 p1

q3 p1 p1

Transiciones de p1: δ|E (p1, l) = p1, δ|E (p1, d) = p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 414 / 539

Page 415: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

El algoritmo finaliza porque todos los estados de Nuevoestan marcados.

Los estados generados son:

+ p0 = {q0}+ p1 = {q1, q2, q3}

El estado inicial es p0 porque q0 ∈ p0.

F|E = {p1} porque p1 ∩ F = {q1, q2, q3} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 415 / 539

Page 416: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

Funcion de transicion del automata minimizadoδ l d

← p0 p1 −→ p1 p1 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 416 / 539

Page 417: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (1.- Minimizacion de AFD)

p 0 1

lp

l, d

AFD minimizado que reconoce identificadores de Pascal.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 417 / 539

Page 418: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

qq q1 20

q4

q3

[

[

d

d

d]

]

AFD original que reconoce componentes de arrays.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 418 / 539

Page 419: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Estados no finales: p0 = Q − F = {q1, q2, q4}Estados finales: p1 = F = {q0, q3}Nuevo = {p0, p1}Los estados p0 y p1 no estan marcados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 419 / 539

Page 420: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Nota

El estado inicial q0 pertenece a p1 porque tambien es un estadofinal

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 420 / 539

Page 421: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Paso 1: Analisis de p0 = {q1, q2, q4}Se marca p0: Nuevo = {p

0, p1}

Se comprueban las transiciones de los estados de p0:

δ [ d ]

q1 − p0 −q2 − p0 p1

q4 − p0 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 421 / 539

Page 422: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Paso 1: Analisis de p0 = {q1, q2, q4}q1 no es equivalente a q2 y q4.

El antiguo estado p0 se divide en dos nuevos estados:

p0 = {q1}p2 = {q2, q4}

Nuevo = {p0, p1, p2}Todos los estados estan desmarcados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 422 / 539

Page 423: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Paso 2: Segundo analisis de p0 = {q1}Se marca p0: Nuevo = {p

0, p1, p2}

p0 solo contiene un estado y no se puede descomponer mas.

Transiciones “provisionales” de p0:

δ|E (p0, [) = E [δ(q1, [)] = E [−] = −δ|E (p0, d) = E [δ(q1, d)] = E [q2] = p2

δ|E (p0, ]) = E [δ(q1, ])] = E [−] = −

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 423 / 539

Page 424: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Paso 3: Analisis de p1 = {q0, q3}Se marca p1: Nuevo = {p

0, p

1, p2}

Se comprueban que los estados de p1 son homogeneos:

δ [ d ]

q0 p0 − −q3 p0 − −

Transiciones “provisionales” de p1:

δ|E (p1, [) = E [δ(q0, [)] = E [q1] = p0

δ|E (p1, d) = E [δ(q0, d)] = E [−] = −δ|E (p1, ]) = E [δ(q0, ])] = E [−] = −

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 424 / 539

Page 425: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Paso 4: Analisis de p2 = {q2, q4}Se marca p2: Nuevo = {p

0, p

1, p

2}

Se comprueban que los estados de p1 son homogeneos:

δ [ d ]

q2 − p2 p1

q4 − p2 p1

Transiciones de p2:

δ|E (p1, [) = E [δ(q2, [)] = E [−] = −δ|E (p1, d) = E [δ(q2, d)] = E [q4] = p2

δ|E (p1, ]) = E [δ(q2, ])] = E [q3] = p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 425 / 539

Page 426: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

El algoritmo finaliza porque todos los estados de Nuevoestan marcados.

Los estados generados son:

+ p0 = {q1}+ p1 = {q0, q3}+ p2 = {q2, q4}

El estado inicial es p1 porque q0 ∈ p1.

F|E = {p1} porque p1 ∩ F = {q0, q3} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 426 / 539

Page 427: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

Funcion de transicion del automata minimizadoδ [ d ]

p0 − p2 −→← p1 p0 − −

p2 − p2 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 427 / 539

Page 428: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (2.- Minimizacion de AFD)

pp1

p

[

d

d

]

0

2

Automata cociente (automata mınimo).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 428 / 539

Page 429: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

qq q q1 2

010 3

0

qq q6

0 11

0

0

1 1

5 4

10

1

1

0

AFD que se va a minimizar.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 429 / 539

Page 430: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Estados no finales: p0 = Q − F = {q0, q2, q3, q4, q5, q6}Estados finales: p1 = F = {q1}Nuevo = {p0, p1}Los estados p0 y p1 no estan marcados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 430 / 539

Page 431: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 1: Analisis de p0 = {q0, q2, q3, q4, q5, q6}Se marca p0: Nuevo = {p

0, p1}

Se comprueban las transiciones de los estados de p0:

δ 0 1

q0 p1 p0

q2 p0 p1

q3 p0 p1

q4 p1 p0

q5 p0 p1

q6 p0 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 431 / 539

Page 432: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso numero 1: Analisis de p0 = {q0, q2, q3, q4, q5, q6}q0 y q4 tienen transiciones diferentes de los otros estados

El antiguo estado p0 se divide en dos nuevos estados:

p0 = {q0, q4}p2 = {q2, q3, q5, q6}

Nuevo = {p0, p1, p2}Todos los estados estan desmarcados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 432 / 539

Page 433: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 2: Segundo analisis de p0 = {q0, q4}Se marca p0: Nuevo = {p

0, p1, p2}

Se comprueban si las transiciones de los estados contenidos enp0 son homogeneas:

δ 0 1

q0 p1 p2

q4 p1 p2

Transiciones “provisionales” de p0:

δ|E (p0, 0) = E [δ(q0, 0)] = E [q1] = p1

δ|E (p0, 1) = E [δ(q0, 1)] = E [q5] = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 433 / 539

Page 434: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 3: Analisis de p1 = {q1}Se marca p1: Nuevo = {p

0, p

1, p2}

p1 solo contiene un estado y no se puede descomponer mas.

Transiciones “provisionales” de p1:

δ|E (p1, 0) = E [δ(q1, 0)] = E [q1] = p1

δ|E (p1, 1) = E [δ(q1, 1)] = E [q2] = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 434 / 539

Page 435: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 4: Analisis de p2 = {q2, q3, q5, q6}Se marca p2: Nuevo = {p

0, p

1, p

2}

Se comprueban si son homogeneas las transiciones de losestados contenidos en p2:

δ 0 1

q2 p2 p1

q3 p2 p1

q5 p0 p1

q6 p0 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 435 / 539

Page 436: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 4: Analisis de p2 = {q2, q3, q5, q6}q2 y q3 tienen transiciones diferentes de los otros estados

El antiguo estado p2 se divide en dos nuevos estados:

p2 = {q2, q3}p3 = {q5, q6}

Nuevo = {p0, p1, p2, p3}Todos los estados estan desmarcados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 436 / 539

Page 437: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 5: Tercer analisis de p0 = {q0, q4}Se marca p0: Nuevo = {p

0, p1, p2, p3}

Se comprueban si las transiciones de los estados contenidos enp0 son homogeneas:

δ 0 1

q0 p1 p3

q4 p1 p3

Transiciones “provisionales” de p0 han cambiado:

δ|E (p0, 0) = E [δ(q0, 0)] = E [q1] = p1

δ|E (p0, 1) = E [δ(q0, 1)] = E [q5] = p3

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 437 / 539

Page 438: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso 6: Segundo analisis de p1 = {q1}Se marca p1: Nuevo = {p

0, p

1, p2, p3}

El estado p1 no se puede dividir porque solo contiene a q1

Se comprueba si han cambiado las transiciones “provisionales”de p1:

δ|E (p1, 0) = E [δ(q1, 0)] = E [q1] = p1

δ|E (p1, 1) = E [δ(q1, 1)] = E [q2] = p2

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 438 / 539

Page 439: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso numero 7: Segundo analisis de p2 = {q2, q3}Se marca p2: Nuevo = {p

0, p

1, p

2, p3}

Se comprueban si son homogeneas las transiciones de losestados contenidos en p2:

δ 0 1

q2 p2 p1

q3 p2 p1

Los estados q2 y q3 son equivalentes y no se requiere ningunadivision.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 439 / 539

Page 440: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Paso numero 8: Analisis de p3 = {q5, q6}Se marca p3: Nuevo = {p

0, p

1, p

2, p

3}

Se comprueban si son homogeneas las transiciones de losestados contenidos en p3:

δ 0 1

q5 p0 p1

q6 p0 p1

Los estados q5 y q6 son equivalentes y no se requiere ningunadivision.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 440 / 539

Page 441: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

El algoritmo finaliza porque todos los estados de Nuevoestan marcados.

Los estados generados son:

+ p0 = {q0, q4}+ p1 = {q1}+ p2 = {q2, q3}+ p3 = {q5, q6}

El estado inicial es p0 porque q0 ∈ p0.

F|E = {p1} porque p1 ∩ F = {q1} 6= ∅

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 441 / 539

Page 442: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

Funcion de transicion del automata minimizadoδ|E 0 1

→ p0 p1 p3

← p1 p1 p2

p2 p2 p1

p3 p0 p1

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 442 / 539

Page 443: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

pp p1 2

10

0

p3

0 1

1

0

10

Representacion grafica del AFD minimizado.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 443 / 539

Page 444: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Reconocimiento de componentes lexicosMinimizacion de automatas finitos deterministas

Ejemplo (3.- Minimizacion de AFD)

qq q q1 2

010 3

0

qq q6

0 11

0

0

1 1

5 4

10

1

1

0

AFD que se ha minimizado.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 444 / 539

Page 445: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido del tema

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 445 / 539

Page 446: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicosIntroduccionCodificacion manual del analizador lexicoGeneracion automatica del analizador lexico

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 446 / 539

Page 447: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Definicion

Se denomina implementacion de un analizador lexico a sucodificacion en un lenguaje de programacion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 447 / 539

Page 448: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Nota

Se recuerda que el analizador lexico suele ser una funcion oprocedimiento auxiliar del analizador sintactico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 448 / 539

Page 449: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Tareas del analizador lexico

Reconocer todos los componentes lexicos:

+ Palabras reservadas+ Identificadores+ numeros+ Operadores aritmeticos, relacionales, etc.+ Etc.

Enviar al analizador sintactico los componentes lexicosreconocidos.

Procesar los errores lexicos que pueda detectar.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 449 / 539

Page 450: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Nota (Primer paso para implementar el analizador lexico)

Definir una expresion regularpara denotar cada componente lexico

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 450 / 539

Page 451: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Tipo de reconocimiento de las palabras reservadas

Implıcito

+ Se pre-instalan en la tabla de sımbolos.+ Se procesan inicialmente como identificadores.+ Se reconocen como palabras claves al buscarlas en la tabla de

sımbolos.

Explıcito

+ Se reconocen de forma independiente a los identificadores+ Siempre se utiliza el lexema mas largo: if - ifa+ En caso de igualdad de longitudes, se escoge el componente

lexico que se haya especificado en primer lugar.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 451 / 539

Page 452: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosIntroduccion

Metodos de implementacion del Analizador Lexico

Codificacion manual utilizando un lenguaje de programacion.

Utilizacion de un generador automatico del analizador lexico:

+ lex: lenguaje C y unix.+ flex: lenguaje C y linux.+ pclex: lenguaje C y MSDOS.+ Jlex: lenguaje java y multiplataforma.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 452 / 539

Page 453: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicosIntroduccionCodificacion manual del analizador lexicoGeneracion automatica del analizador lexico

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 453 / 539

Page 454: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Caracterısticas

Se utiliza un lenguaje de programacion:

+ Alto nivel: C, C++, Pascal, Java, etc.+ Bajo nivel: ensamblador.

Se codifica una funcion que combina todos los AFDstransformados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 454 / 539

Page 455: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Lenguaje de programacion de alto nivel

Ventajas

+ Computacionalmente eficiente.+ Permite la deteccion y recuperacion especıfica de errores.

Inconvenientes

+ Requiere un gran esfuerzo de programacion.+ Las modificaciones pueden ser dificultosas.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 455 / 539

Page 456: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Lenguaje de programacion de bajo nivel

Ventajas

+ Computacionalmente muy eficiente: permite controlar deforma directa la Entrada / Salida.

+ Permite la deteccion y recuperacion especıfica de errores.

Inconvenientes

+ Requiere un esfuerzo de programacion muy elevado.+ Las modificaciones son muy dificultosas.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 456 / 539

Page 457: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Combinacion de los Automatas Finitos Deterministastransformados

Se transforma cada AFD para que:

+ reconozca el componente lexico+ compruebe si es necesario procesar el sımbolo que sigue al

componente lexico:

- Si el sımbolo es correcto, se devuelve al “buffer” de entrada.- Si el sımbolo es incorrecto, se procesa el error detectado.

+ devuelva el componente lexico reconocido.+ y continue el analisis lexico.

Se combinan todos los Automatas Finitos Deterministastransformados.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 457 / 539

Page 458: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (1.- Transformacion de AFD: 1/3)

q 0 1

l, sq

l, s, d

AFD que reconoce identificadores del lenguaje C.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 458 / 539

Page 459: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (1.- Transformacion de AFD: 2/3)

2qq

1q0

l, s

l, s, d

3q

Símbolo correcto

Símbolo incorrectol, sσ

AFD transformado.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 459 / 539

Page 460: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (1.- Transformacion de AFD: 3/3)

El estado q2 debe:

+ Devolver el componente lexico reconocido.+ Devolver al “buffer” de entrada el sımbolo correcto que no

pertenece al identificador de C:

- espacio en blanco- punto y coma,- etc.

El estado q3 debe procesar el error detectado.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 460 / 539

Page 461: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Nota

Las celdas vacıas de la funcion de transicion se completan con“rutinas” de tratamiento de errores:

δ · · · σj · · ·→ q0

· · ·qi Error· · ·

Error representa una funcion o procedimiento que permite eltratamiento del error detectado.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 461 / 539

Page 462: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Nota

Algunas veces no es necesario comprobar el sımbolo que sigueal componente lexico.

Suele ocurrir con los componentes lexicos mas simples:

Punto y comaEspacio en blanco, tabular o salto de lıneaOperadores aritmeticosEtc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 462 / 539

Page 463: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (2.- Transformacion AFD: 1/2)

q0 1

<q

=q

q

2

3

otro símbolo

AFD transformado que reconoce los componentes lexicos MENORo MENOR IGUAL.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 463 / 539

Page 464: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (2.- Transformacion AFD: 2/2)

q2 reconoce el componente lexico MENOR IGUAL

+ No se necesita procesar el sımbolo siguiente, porque no ha sidoleıdo.

q3 reconoce el componente lexico MENOR.

+ El “otro sımbolo” debe ser devuelto al “buffer” de entrada.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 464 / 539

Page 465: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Estrategias de la codificacion manual

Utilizar directamente las tablas de la funcion de transicion delos AFDs.

Simular el funcionamiento de los AFDs mediante sentenciasde control.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 465 / 539

Page 466: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (Uso de la tabla de la funcion de transicion)

INICIO ESTADO ← INICIAL

LEER (CARACTER)

MIENTRAS (FINAL(ESTADO) = FALSO Y CARACTER 6= FIN-DE-FICHERO)

HACERESTADO ← M(ESTADO,CARACTER)

LEER (CARACTER)

FIN MIENTRAS

SI ERROR(ESTADO) = VERDADERO ENTONCESPROCESAR-ERROR(ESTADO)

SI NOSI DEVOLVER-CARACTER(ESTADO) ENTONCESDEVOLVER (CARACTER)

FIN SI

COMPONENTE-LEXICO(ESTADO)

FIN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 466 / 539

Page 467: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (Uso de la tabla de la funcion de transicion)

INICIO ESTADO ← INICIAL

LEER (CARACTER)

MIENTRAS (FINAL(ESTADO) = FALSO Y CARACTER 6= FIN-DE-FICHERO)

HACERESTADO ← M(ESTADO,CARACTER)

LEER (CARACTER)

FIN MIENTRAS

SI ERROR(ESTADO) = VERDADERO ENTONCESPROCESAR-ERROR(ESTADO)

SI NOSI DEVOLVER-CARACTER(ESTADO) ENTONCESDEVOLVER (CARACTER)

FIN SI

COMPONENTE-LEXICO(ESTADO)

FIN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 467 / 539

Page 468: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (Simulacion con sentencias de control: 1/3)

yylex(){

int c;

/* Salta blancos y tabuladores */

while((c=getchar())==’ ’ || c==’\t’ ); /* Sentencia nula */

if (c == EOF){

printf("\n Fin de la ejecucion de %s \n", progname);

return 0;

}else if (c == ’.’ || isdigit(c)){ /* El sımbolo leıdo se devuelve al buffer de entrada

para leerlo como parte de un numero */

ungetc(c,stdin);/* Lee el numero */

scanf(" %lf",&yylval.val);return NUMBER;

}Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 468 / 539

Page 469: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (Simulacion con sentencias de control: 2/3)

else if (isalpha(c)){ /* comprueba si lee un identificador */

Symbol *s;

char sbuf[100],*p=sbuf;

do {*p++=c;

} while((c=getchar()) != EOF && isalnum(c));

/* Devuelve el sımbolo que no pertenece al identificador */

ungetc(c,stdin);/* Cadena correcta: caracter nulo al final */

*p=’\0’;/* Si no esta en la tabla de sımbolos, lo instala */

if ((s=lookup(sbuf))==0) s = install(sbuf,INDEFINIDA,0.0);

yylval.sym=s;

return s->tipo==INDEFINIDA ? VAR : s->tipo;

}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 469 / 539

Page 470: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosCodificacion manual del analizador lexico

Ejemplo (Simulacion con sentencias de control: 3/3)

else if (c==’\n’){lineno++;

return FIN;

}else if (c==’;’) return FIN;

/* Devuelve el codigo ASCII de los demas caracteres */

return c;

}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 470 / 539

Page 471: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicosIntroduccionCodificacion manual del analizador lexicoGeneracion automatica del analizador lexico

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 471 / 539

Page 472: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

Caracterısticas de la generacion automatica

Los componentes lexicos se denotan mediante expresionesregulares.

El generador lexico crea automaticamente el codigo a partir delas expresiones regulares.

Generadores lexicos: lex, flex, pclex, jlex, ...

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 472 / 539

Page 473: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 473 / 539

Page 474: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 474 / 539

Page 475: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 475 / 539

Page 476: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 476 / 539

Page 477: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 477 / 539

Page 478: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

COMPONENTES LEXICOS

EXPRESIONES REGULARES

AFN

AFD

ANALIZADOR LEXICO

LEX

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 478 / 539

Page 479: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

LEX

Creado por M. E. Lesk y E. Schmidt (Bell Laboratories).

Genera analizadores lexicos para C, Fortran, Raftor.

Hay versiones para Unix, Linux, DOS, etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 479 / 539

Page 480: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicosGeneracion automatica del analizador lexico

Funcionamiento de LEX

Analizador léxicofichero de lex

yylex()

lex.yy.cnombre.l

LEXExpresiones regulares

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 480 / 539

Page 481: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Funcionamiento de LEX

Unix

> lex nombre.l> cc -g lex.yy.c -ll -o nombre.exe

Linux

> flex nombre.l> gcc -g lex.yy.c -lfl -o nombre.exe

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 481 / 539

Page 482: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejecucion

> ./nombre.exe

Redirigiendo la entrada y la salida

> ./nombre.exe < fichero entrada> ./nombre.exe < fichero entrada > fichero salida

Usando argumentos desde la lınea de comandos

> ./nombre.exe fichero entrada> ./nombre.exe fichero entrada fichero salida

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 482 / 539

Page 483: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Estructura del fichero de LEX

declaraciones (opcional)

% %

reglas de traduccion de las expresiones regulares

% %

funciones auxiliares (opcional)

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 483 / 539

Page 484: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: expresiones regulares

Sımbolos especiales:

+ |: disyuncion+ ( ): agrupacion de expresiones regulares+ *: repeticion de un patron cero o mas veces.+ +: repeticion de un patron una o mas veces.+ ?: el patron puede aparecer cero o una vez.+ “ ”: delimitadores de cadenas+ .: cualquier caracter distinto del salto de lınea (\n).+ \n: salto de lınea+ $ : caracter de final de lınea+ [ ]: delimitadores de clases de caracteres+ ˆ : inicio de lınea y complementario de una clase.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 484 / 539

Page 485: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: expresiones regulares

Nota

Si se antepone la barra \ delante de un sımbolo especial entoncessolo se representa a sı mismo:

\. → solo representa el punto.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 485 / 539

Page 486: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (LEX: expresiones regulares 1 / 3)

Expresion regular Significadoa|b a, b

[ab] a, b

ab ab

ab+ ab, abb, abbb, · · ·(ab)+ ab, abab, ababab, · · ·

ab* a, ab, abb, · · ·(ab)* ε, ab, abab, · · ·

ab{1,3} ab, abb, abbb

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 486 / 539

Page 487: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (LEX: expresiones regulares 2 / 3)

Expresion regular Significado[a-z] a, b, c, · · · , z

[a \-z] a, −, z

[-az] −, a, z

[az-] a, z, −[a-zA-Z] a, b, · · · , z, A, B, · · · , Z

[a-zA-Z0-9] a, b, · · · , z, A, B, · · · , Z, 0, 1, · · · , 9

[a-zA-Z0-9]* cero o mas veces a, b, c, · · · , 9

[a-zA-Z0-9]+ una o mas veces a, b, c, · · · , 9

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 487 / 539

Page 488: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (LEX: expresiones regulares 3 / 3)

Expresion regular Significado[ \t \n] espacio en blanco, tabulador y salto de

lınea[ˆ ab] cualquier caracter distinto de a o b[a ˆ b]

a, acento circunflejo, ba/b

a solo si va seguido de ba$

a si va seguido del caracter \na/ \n

a si va seguido del caracter \nˆ abc

abc si esta escrito al principio de la lınea[\40-\176] caracteres ASCII imprimibles desde octal

40 (espacio) hasta octal 176 (tilde ˜ )

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 488 / 539

Page 489: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: Zona de declaraciones (opcional)

Codigo extendido de lenguaje C delimitado por %{ y }%+ Ficheros de cabecera.+ Macros.+ Prototipos de funciones.+ Variables globales+ Etc.

Directivas de lex: %x, %a, %n %o, %p, ...

Declaracion de definiciones regulares.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 489 / 539

Page 490: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: Zona de declaraciones (opcional)

Directivas de lex (tablas internas):

+ %x ESTADO: permite activar reglas condicionales (vease elejemplo del comentario).

+ %a numero: cambia el numero de transiciones empaquetadas.+ %n numero: cambia el numero de transiciones.+ %e numero: cambia el numero de nodos.+ %p numero: cambia el numero de posiciones.+ Etc

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 490 / 539

Page 491: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Definiciones regulares 1/2)

numero [0-9]

letra [a-zA-Z]

identificador {letra}({letra}|{numero})*

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 491 / 539

Page 492: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Definiciones regulares 2/2)

La definicion regular identificador definida como

{letra}({letra}|{numero})∗

es transformada en

[a− zA− Z ]([a− zA− Z ]|[0− 9])∗

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 492 / 539

Page 493: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: Zona de reglas de traduccion

expresion regular sentencia de lenguaje C

expresion regular { sentencias de lenguaje C }

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 493 / 539

Page 494: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Lex: zona de reglas)

% %[ \t] { ; } /* saltar los espacios y los tabuladores */

{numero}+\.?|{numero}*\.{numero}+ {sscanf(yytext," %lf",&yylval.val);return NUMBER;

}

\n {lineno++; return FIN;}. {return yytext[0];} /* Devuelve cualquier otro caracter */

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 494 / 539

Page 495: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: resolucion de ambiguedades

Si una secuencia de caracteres se puede emparejar con variasexpresiones regulares,

1 tiene preferencia la expresion regular que denote la cadena decaracteres de mayor longitud.

2 si la longitud de la cadena es igual, tiene preferencia la queaparezca en primer lugar.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 495 / 539

Page 496: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Lex: resolucion de la ambiguedad de if)

% %if { return IF; }{identificador} { Symbol *s;

if ((s=lookup(yytext)) == 0)

s = install (yytext, INDEFINIDA, 0.0);

yylval.sym = s;

return s->tipo == INDEFINIDA ? VAR : s->tipo;

}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 496 / 539

Page 497: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: comandos especiales

ECHO: imprime por pantalla el texto reconocido.

BEGIN: cambia a un estado definido por el programador(vease el ejemplo del comentario).

REJECT: rechaza el texto reconocido para que pueda serprocesado por otra regla (vease el ejemplo de pink).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 497 / 539

Page 498: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (ECHO)

Imprime por pantalla todos los caracteres

% %.|\n ECHO;

% %

Equivalencia

% %.|\n printf(" %s",yytext");

% %

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 498 / 539

Page 499: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: Zona de funciones auxiliares (opcional)

Codigo de funciones auxiliares utilizadas por las reglas detraduccion

Tambien se pueden incluir

+ Ficheros de cabecera.+ Macros.+ Prototipos de funciones.+ Declaracion de variables globales+ Etc.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 499 / 539

Page 500: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: variables globales predefinidas

yytext: cadena que contiene el texto reconocido (tipo: char *)

yyleng: longitud de yytext (tipo: int)

yyin:

Puntero al fichero de entradaTipo: FILE *Valor por defecto: stdin, el teclado

yyout:

Puntero al fichero de salidaTipo: FILE *Valor por defecto: stdout, la pantalla

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 500 / 539

Page 501: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

LEX: funciones predefinidas

yylex(): contiene el analizador lexico generado por flex o lex

yymore(): indica a lex que anada el siguiente componentelexico al componente lexico actual (vease el ejemplo hiper).

yywrap(): se ejecuta cuando el analizar lexico encuentra el finde fichero:

Si devuelve 0, el analizador lexico continua explorando.Si devuelve 1 (valor por defecto), el analizador lexico devuelveun componente lexico nulo para indicar el fin del fichero.Esta funcion puede ser redefinida por el programador.

yyless(n): retiene los primeros n caracteres de yytext ydevuelve el resto al dispositivo de lectura.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 501 / 539

Page 502: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Lex: zona de declaraciones 1/3)

%{#include "macros.h"

#include "hoc3.h"

#include "y.tab.h"

extern char *progname;

extern int lineno;

%}

/* definiciones regulares */

numero [0-9]letra [a-zA-Z]

identificador {letra}({letra}|{numero})*

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 502 / 539

Page 503: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Lex: zona de reglas 2/3)

% %[ \t] { ; } /* saltar los espacios y los tabuladores */

{numero}+\.?|{numero}*\.{numero}+ {sscanf(yytext," %lf",&yylval.val);return NUMBER;

}{identificador} { Symbol *s;

if ((s=lookup(yytext)) == 0)

s = install (yytext, INDEFINIDA, 0.0);

yylval.sym = s;

return s->tipo == INDEFINIDA ? VAR : s->tipo;

}; {return FIN ;}\n {lineno++; return FIN;}. {return yytext[0];} /* Devuelve cualquier otro caracter */

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 503 / 539

Page 504: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Implementacion de los analizadores lexicos

Ejemplo (Lex: zona de funciones auxiliares 3/3)

/***** Zona de funciones auxiliares *****/

extern FILE *yyin, *yyout;

main(int cantidad, char *palabras[])

{ switch(cantidad){

case 2: yyin=fopen(palabras[1],‘‘r’’);break;

case 3: yyin=fopen(palabras[1],‘‘r’’);yyout=fopen(palabras[2],‘‘w’’);

}yylex();

}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 504 / 539

Page 505: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido del tema

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de errores

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 505 / 539

Page 506: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccionErrores lexicosTratamiento de los erroresMetodos de recuperacion de los errores lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 506 / 539

Page 507: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Tipos de errores

Invisibles: errores que no pueden ser detectados por elprocesador de lenguajes

Visibles: errores que sı pueden ser detectados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 507 / 539

Page 508: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Ejemplo (Error invisible)

Se ha tecleadoa = b + c

en veza = b ∗ c

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 508 / 539

Page 509: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Errores invisibles

Suelen ser errores “conceptuales” o “algorıtmicos”

No pueden ser detectados porque no infrigen ningunanorma del lenguaje de programacion.

Podrıan ser detectados si se incluyen tecnicas de verificacionen el procesador de lenguajes:

+ Poseen gran complejidad+ Su coste computacional es muy elevado

En la practica, estos errores son “detectados” y “corregidos”manualmente

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 509 / 539

Page 510: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Errores visibles

Pueden ser detectados:

+ durante el proceso de traduccion+ o durante la ejecucion del programa ejecutable.

Son producidos porque no se ha tenido suficiente “cuidado” alprogramar:

+ falta de comprension o desconocimiento de lascaracterısticas del lenguaje

+ o confusion con las caracterısticas de otro lenguaje.

Se caracterizan por

+ Ser errores de ortografıa+ Ser errores que omiten requisitos formales del lenguaje de

programacion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 510 / 539

Page 511: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Errores visibles

Se clasifican segun la fase en que son detectados:

Errores lexicos: no se reconoce un componente lexico correcto.

Errores sintacticos:

+ Sentencia que no respeta las reglas gramaticales del lenguajede programacion

+ Se origina al procesar un componente lexico “inesperado”

Errores semanticos: el significado de un componente lexico esincorrecto o inapropiado.

Errores de ejecucion:

+ Funcionamiento incorrecto del programa.+ No detectables durante el proceso de compilacion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 511 / 539

Page 512: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccion

Ejemplos (Errores visibles)

Errores lexicos:

+ Componente lexico mal escrito.+ Componente lexico con sımbolos no permitidos.

Errores sintacticos:

+ Sentencias de control incompletas o mal escritas.+ Parametros incorrectos, parentesis no balanceados, ...

Errores semanticos:

+ Identificador usado incorrectamente o no declarado.+ Valor fuera de rango, ...

Errores de ejecucion:

+ Bucles infinitos.+ Flujo de control incorrecto, ...

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 512 / 539

Page 513: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccionErrores lexicosTratamiento de los erroresMetodos de recuperacion de los errores lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 513 / 539

Page 514: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Tipos de errores lexicos

Componentes lexicos

con sımbolos ilegales.

incompletos o muy largos.

mal escritos: infrigen alguna restriccion del lenguaje deprogramacion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 514 / 539

Page 515: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplos (Errores lexicos 1/3)

Componentes lexicos con sımbolos ilegales

+ Sımbolo no permitido en un identificador: dato$+ Sımbolo no permitido en un numero: 3.17#10

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 515 / 539

Page 516: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplos (Errores lexicos 2/3)

Componentes lexicos incompletos

+ Cadenas de caracteres no cerradas

/* faltan las comillas finales */

static char *nombre = ‘‘Almudena ... ;

+ Comentarios no cerrados.

/* Este es un ejemplo maravilloso de comentario

que no tiene cierre final

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 516 / 539

Page 517: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplos (Errores lexicos 3/3)

Componentes lexicos mal escritos

Lenguaje Componente lexico Incorrecto Correcto

C IDENTIFICADOR 1dato- dato 1

C NUMERO 3.14.15 3.1415

C MENOR IGUAL =< <=

Prolog MENOR IGUAL <= =<

Fortran MENOR IGUAL .le .le.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 517 / 539

Page 518: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Caracterısticas de los errores de los componentes lexicos

Son provocados por una escritura incorrecta.

Son los mas frecuentes.

El Analisis Lexico no puede detectar todos los errores de loscomponentes lexicos.

Muchos errores de los componentes lexicos son detectadosdurante las demas fases.

Pueden provocar errores sintacticos, semanticos o deejecucion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 518 / 539

Page 519: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (1.- Error no detectable durante el analisis lexico)

Palabra reservada mal escrita

fi (x >= 0) valor absoluto = x;

else valor absoluto = -x;

Nota

El analisis lexico genera para fi el componente lexicoIDENTIFICADOR en vez de IF.

Este error podra ser detectado durante el analisis sintactico

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 519 / 539

Page 520: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (1.- Error no detectable durante el analisis lexico)

Palabra reservada mal escrita

fi (x >= 0) valor absoluto = x;

else valor absoluto = -x;

Nota

El analisis lexico genera para fi el componente lexicoIDENTIFICADOR en vez de IF.

Este error podra ser detectado durante el analisis sintactico

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 520 / 539

Page 521: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (2.- Error no detectable durante el analisis lexico)

Omision de sımbolo de fin de sentencia

/* falta el punto y coma */

if (x >= 0) valor absoluto = x

else valor absoluto = -x;

Nota

Este error puede ser detectado durante el analisis sintactico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 521 / 539

Page 522: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (2.- Error no detectable durante el analisis lexico)

Omision de sımbolo de fin de sentencia

/* falta el punto y coma */

if (x >= 0) valor absoluto = x

else valor absoluto = -x;

Nota

Este error puede ser detectado durante el analisis sintactico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 522 / 539

Page 523: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (3.- Error no detectable durante el analisis lexico)

Indice de un array que posee un valor que fuera de rango

a[-999999] = 10;

Nota

Este error puede ser detectado durante el analisis semantico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 523 / 539

Page 524: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (3.- Error no detectable durante el analisis lexico)

Indice de un array que posee un valor que fuera de rango

a[-999999] = 10;

Nota

Este error puede ser detectado durante el analisis semantico.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 524 / 539

Page 525: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (4.- Error no detectable durante el analisis lexico)

Argumento erroneo de una funcion

valor = log(-10);

Nota

Este error se detectara durante la ejecucion.

Podrıa ser detectado con tecnicas de verificacion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 525 / 539

Page 526: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresErrores lexicos

Ejemplo (4.- Error no detectable durante el analisis lexico)

Argumento erroneo de una funcion

valor = log(-10);

Nota

Este error se detectara durante la ejecucion.

Podrıa ser detectado con tecnicas de verificacion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 526 / 539

Page 527: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccionErrores lexicosTratamiento de los erroresMetodos de recuperacion de los errores lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 527 / 539

Page 528: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Criterios “generales” para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 528 / 539

Page 529: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Criterios “generales” para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 529 / 539

Page 530: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Criterios “generales” para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 530 / 539

Page 531: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Criterios “generales” para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 531 / 539

Page 532: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Nota

Los criterios “generales” para el tratamiento de los errores sonaplicables a todos los tipos de errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 532 / 539

Page 533: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresTratamiento de los errores

Nota (Reparacion del error)

Siempre debe ser revisada despues por el programador.

Solo propone una solucion, que no tiene por que ser lacorrecta.

Solo pretende que el proceso de traduccion continue ... paradetectar mas errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 533 / 539

Page 534: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Contenido de la seccion

1 Introduccion

2 Especificacion de componentes lexicos

3 Reconocimiento de componentes lexicos

4 Implementacion de los analizadores lexicos

5 Deteccion y recuperacion de erroresClasificacion de los errores del proceso de traduccionErrores lexicosTratamiento de los erroresMetodos de recuperacion de los errores lexicos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 534 / 539

Page 535: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresMetodos de recuperacion de los errores lexicos

Metodos de procesamiento de los errores lexicos

Modo de panico o de sincronizacion

Metodo de la mınima distancia

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 535 / 539

Page 536: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresMetodos de recuperacion de los errores lexicos

Modo de panico o de sincronizacion

Se eliminan los caracteres de la entrada hasta que seencuentra un componente lexico bien formado

Es sencillo de aplicar

Puede provocar errores en el analisis sintactico al suprimirotros componentes lexicos correctos.

Es util en un entorno interactivo.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 536 / 539

Page 537: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresMetodos de recuperacion de los errores lexicos

Metodo de la mınima distancia

Supone que la mayorıa de los errores lexicos son provocadospor una unica transformacion.

Se realizan transformaciones relativamente simples:

+ Eliminar un caracter: dato$1 =⇒ dato1+ Insertar un caracter: include =⇒ #include+ Permutar dos caracteres: => =⇒ >=+ Modificar un caracter: /# =⇒ /*

Es costoso de implementar.

Es adecuado para un entorno local o interactivo.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 537 / 539

Page 538: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

Deteccion y recuperacion de erroresMetodos de recuperacion de los errores lexicos

Nota

Se debe informar de la transformacion realizada.

La transformacion no pretende corregir el error, sino continuarcon el analisis lexico.

Posteriormente, el programador debera supervisar latransformacion realizada.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 538 / 539

Page 539: PROCESADORES DE LENGUAJES · Procesadores de Lenguajes Tema II: An alisis L exico Contenido de la secci on 1 Introducci on El an alisis l exico en el proceso de traducci on Componentes

Procesadores de Lenguajes Tema II: Analisis Lexico

PROCESADORES DE LENGUAJESTEMA II.- ANALISIS LEXICO

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 539 / 539