unidad ii analisis lexico

Upload: jonathan-garcia-muro

Post on 13-Feb-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 Unidad II Analisis Lexico

    1/29

    Lenguajes y Expresiones Regulares

    Universidad de Guadalajara

    Centro Universitario de la Costa

    Ingeniera en Computacin

    Compiladores

    Febrero 20, 2014.

  • 7/23/2019 Unidad II Analisis Lexico

    2/29

    En un compilador, el anlisis lineal se llama anlisis linealoexploracin.

    Por anlisis lineal se entiende como la cadena de caracteres que constituye

    el programa fuente se lee de izquierda a derecha y se agrupan en

    componentes lxicos, que son secuencias de caracteres que tiene un

    significado colectivo.

    Los espacios en blanco (delimitadores) que separan los caracteres de estos

    componentes lxicos normalmente se eliminan durante el anlisis lxico.

  • 7/23/2019 Unidad II Analisis Lexico

    3/29

    Una expresin regular denota un conjunto de secuencias de smbolos vlidas

    que se construyen en base al alfabeto de un lenguaje. Generalmente estos

    conjuntos se representan como:

    Es una expresin regular que denota el conjunto vaco (el conjunto no

    contiene secuencias de smbolos).

    Es una expresin regular que denota al conjunto que contiene la secuencia

    vaca.

    S Una secuencia de smbolos S es una expresin regular que denota a un

    conjunto que contiene a S.

  • 7/23/2019 Unidad II Analisis Lexico

    4/29

    2 1 Lenguajes y Expresiones

    Regulares

    El analizar lxico es la primera fase de un compilador. Su primer funcin

    consiste en leer los caracteres de entrada y elaborar como salida una

    secuencia de componentes lxicos que utiliza el analizador sintctico para

    hacer el anlisis.

    Existen varias razones para dividir la fase de anlisis de la compilacin en

    anlisis lxico y anlisis sintctico:

    Un diseo sencillo es quizs la consideracin ms importante.

    Se mejora la eficiencia del compilador.

    Se mejora la transportabilidad del compilador.

  • 7/23/2019 Unidad II Analisis Lexico

    5/29

    2 1 Lenguajes y Expresiones

    Regulares

    Las expresiones regulares son una notacin importante para especificar

    patrones. Cada patrn concuerda con una serie de cadenas, de modo que las

    expresiones regulares servirn como nombres para conjuntos de cadenas.

    El trmino alfabeto o clase de carcterdenota cualquier conjunto finito de

    smbolos. Ejemplos tpicos de smbolos son las letras y los caracteres. Elconjunto {0,1} es el alfabeto binario. Los cdigos ASCII y EBCDIC son dos

    ejemplos de alfabetos de un computador.

  • 7/23/2019 Unidad II Analisis Lexico

    6/29

    2 1 Lenguajes y Expresiones

    Regulares

    Unaexpresin regular, consiste en comparar un patrn frente a un texto,

    para comprobar si el texto contiene lo especificado en el patrn.

    Patrn:in

    Coinciden:

    Intensidad.

    Cinta.

    Interior

    Una cadena sobre algn alfabeto es una secuencia finita de smbolos

    tomados de ese alfabeto. En teora del lenguaje, los trminos frase y palabraa menudo se utilizan como sinnimos del trminocadena. La longitud de

    una cadenaS,suele escribirse |S|, y corresponde al nmero de apariciones

    de smbolos enS. Ejemplo:Caminoes una cadena de longitud 6.

  • 7/23/2019 Unidad II Analisis Lexico

    7/29

    2 1 Lenguajes y Expresiones

    Regulares

    La cadena vaca esta representada por el smbolo , y es una cadena

    especial de longitud cero.

    El trmino lenguaje se refiere a cualquier conjunto de cadenas de un alfabeto

    fijo. Existen varias operaciones importantes que se pueden aplicar a los

    lenguajes. Para el anlisis lxico interesan principalmente la unin, laconcatenacin y la cerradura.

    Si X eY son cadenas, entonces la concatenacin deX eY, que se

    escribenXYes la cadena que resulta de agregarYaX. Por ejemplo, si

    X=caza eY=fortuna, entoncesXY=cazafortunas.

    La cadena vaca es el elemento identidad que se concatena. Es decir, S =

    S = S.

  • 7/23/2019 Unidad II Analisis Lexico

    8/29

    2 1 Lenguajes y Expresiones

    Regulares

    Ejemplo: SeaLel conjunto {A, B,, Z, a, b,, z} yDel conjunto {0, 1, 2,,

    9}. Se pueden considerarL y D de dos maneras. L como el alfabeto que

    contiene el conjunto de letras maysculas y minsculas, yDcomo el alfabeto

    que contiene el conjunto de los 10 dgitos decimales.

    a. L U Des el conjunto de letras y dgitos (unin).b. LDes el conjunto de cadenas que consta de una letra seguida de un dgito

    (concatenacin).

    c. L4 es el conjunto de todas las cadenas de cuatro letras. (cerradura de

    Kleene).

    d. L*es el conjunto de todas las cadenas de letras, incluiyendo , la cadena

    vaca (cerradura positiva).e. L (LU D)* es el conjunto de todas las cadenas de letras y dgitos que

    comienzan con una letra.

    f. D*es el conjunto de todas las cadenas de uno o ms dgitos.

  • 7/23/2019 Unidad II Analisis Lexico

    9/29

    2 1 Lenguajes y Expresiones

    Regulares

    Expresiones Regulares

    Letra (letra| dgito)*

    La barra vertical significa o, los parntesis se usan para agrupar

    subexpresiones, el asterisco significacero o ms casos dela expresin entre

    parntesis y la yuxtaposicin de letra con el resto de la expresin significa

    concatenacin.

    Una expresin regular se construye a partir de expresiones regulares ms

    simples utilizando un conjunto de reglas definitorias. Cada expresin regularRrepresenta un lenguaje L(R) combinando de varias maneras a los lenguajes

    representados por las subexpresiones deR.

  • 7/23/2019 Unidad II Analisis Lexico

    10/29

    2 1 Lenguajes y Expresiones

    Regulares

    Las siguientes son las reglas que definen las expresiones regulares del

    alfabeto . Asociada a cada regla hay una especificacin del lenguaje

    representado por la expresin regular que se est definiendo.

    1) es una expresin regular designada por {}; es decir, el conjunto que

    contiene la cadena vaca.2) Si A es un smbolo de , entonces A es una expresin regular

    designada por {A}; por ejemplo, el conjunto que contiene la cadena A

    aunque se usa la misma notacin para las tres, tcnicamente , la expresin

    regular A es distinta de la cadena A o del smbolo A. El contexto

    aclarar si se habla deAcomo una expresin regular, cadena o smbolo.

  • 7/23/2019 Unidad II Analisis Lexico

    11/29

    2 1 Lenguajes y Expresiones

    Regulares

    3. Suponiendo que R y S sean expresiones regulares representadas por los

    lenguajes L(R) y L(S), entonces:

    (R) (S) es una expresin regular representada por L(R) U L(S).

    (R) (S) es una expresin regular representada por L(R) L(S).

    (R)* es una expresin regular representada por (L(R))*.

    (R) 2 es una expresin regular representada por L(R)2.

    Se dice que un lenguaje designado por una expresin regular es un

    conjunto regular. La especificacin regular es un ejemplo de definicin

    recursiva. Las reglas 1 y son la base de la definicin recursiva. Las reglas 1y 2 son las base de la definicin; se usa el trmino smbolo bsico para

    referirse a o a un smbolo deque aparezcan en una expresin regular.

    La regla 3 proporciona el paso inductivo.

  • 7/23/2019 Unidad II Analisis Lexico

    12/29

    2 1 Lenguajes y Expresiones

    Regulares

    Se pueden evitar los parntesis innecesarios en las expresiones regulares si

    se adoptan las siguientes convenciones:

    El operador unitario * tiene la mayor precedencia y es asociativo por la

    izquierda.

    La concatenacin tiene la segunda mayor precedencia y es asociativa porla izquierda.

    | tiene la menor precedencia y es asociativo por la izquierda.

    Segn estas convenciones, (a)|((b)*(c)) es equivalente a:a|b*c. estas dos

    expresiones designan el conjunto de cadenas que tienen una solaa, o cero

    o msbseguida de unac.

  • 7/23/2019 Unidad II Analisis Lexico

    13/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Unautmata finitoomquina de estado finitoes un modelo matemtico

    de un sistema que recibe una cadena constituida por smbolos de un alfabeto

    y determina si esa cadena pertenece al lenguaje que el autmata reconoce.

    Los autmatas finitos son las herramientas empleadas como

    reconocedores de tokens. Un autmata finito es capaz de reconocer un

    conjunto regular, es decir, un conjunto de cadenas denotado por cualquier

    expresin regular.

    Una expresin regular denota a un lenguaje regular.

  • 7/23/2019 Unidad II Analisis Lexico

    14/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Un autmata finito es un reconocedor para un lenguaje, su

    programacin no es una tarea compleja, su entrada es una cadenaX

    y responde si , siXes una sentencia del lenguaje, no de otra manera.

    Los autmatas finitos se clasifican en:

    1. Determinsticos.

    2. No Determinsticos

  • 7/23/2019 Unidad II Analisis Lexico

    15/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Formalmente, un autmata finito (AF) puede ser descrito como una

    quinta tupa (S,,T, s, A) donde:

    S es el conjunto de estados.

    es el alfabeto de entrada.T es la funcin de transicin.

    s es el estado inicial.

    A es un conjunto de estados de aceptacin o finales.

  • 7/23/2019 Unidad II Analisis Lexico

    16/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Ejemplo:

    S = {S1, S2}

    = {0, 1}

    T = {(S1, 0, {S2}); (S1, 1, {S1}); (S2, 0, {S1}); (S2, 1, {S2})}s = S1

    A = {S1}

    S1 y S son estados y S1 es un estado de aceptacin y de inicio. Cada arista

    est etiquetado con la entrada.

  • 7/23/2019 Unidad II Analisis Lexico

    17/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Estado de

    aceptacin

    aristas

    alfabeto

    Estados

    Inicio

    Estado

    inicial

  • 7/23/2019 Unidad II Analisis Lexico

    18/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    En el comienzo del proceso de reconocimiento de una cadena, el

    Autmata Finito se encuentra en el estado inicial, y a medida que

    procesa cada smbolo de la cadena va cambiando de estado de

    acuerdo a lo determinado por lafuncin de transicin.

    Cuando se ha procesado el ltimo de los smbolos de la cadena de

    entrada, el autmata se detiene. Si el estado en el que se detuvo es

    un estado de aceptacin o final, entonces la cadena pertenece al

    lenguaje reconocido por el autmata, caso contrario, la cadena no

    pertenece a dicho lenguaje.

  • 7/23/2019 Unidad II Analisis Lexico

    19/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Autmata Finito Determinstico

    Es aquel en cual para cada par (estado, smbolo) est perfectamente definido

    el siguiente estado al cual pasar el autmata, es decir, para cualquier estado

    q en que se encuentre el autmata y con cualquier smbolo s del alfabeto

    ledo, existe exactamente una transicin que parte de q y esta etiquetada con

    si.

    Es un modelo matemtico formado por:

    1. Un conjunto de estados S.

    2. Un conjunto de smbolos de entrada (el alfabeto de smbolos de

    entrada).

    3. Una funcin de transicin mueve que transforma pares estado-smbolo enconjuntos de estados.

    4. Un estado S0que se considera el estado de inicio (o inicial).

    5. Un conjunto de estados F considerados como estados de aceptacin (o

    finales).

  • 7/23/2019 Unidad II Analisis Lexico

    20/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Al contrario de la definicin de autmata finito, este es un caso particular

    donde no se permiten transiciones vacas, el dominio de la funcin T es S ( con

    lo cual no se permiten transiciones desde un estado de un mismo smbolo a

    varios estados).

    Un Autmata Finito Deterministico es un grafo dirigido y etiquetado. Los nodosse llaman estados y los arcos que los unen, transiciones. Las transiciones se

    pueden representar mediante una tabla de transiciones.

  • 7/23/2019 Unidad II Analisis Lexico

    21/29

    2 2 Analizador Lexicogrfico con

    autmatas finitos

    Autmata Finito No Determinstico

    Un AFND o autmata Finito no Determinista es aquel que presenta cero, una

    o ms transiciones por el mismo carcter del alfabeto.

    Un autmata finito no determinista tambin puede o no tener ms de un nodo

    inicial.

    Los AFND tambin se representan formalmente como tuplas de 5 elementos

    (S,,T, s, A).

    La funcin de transicin lleva a un conjunto de estados, el autmata puede

    estar en varios estados a la vez ( o en ninguno si se trata del conjunto vacode estados).

  • 7/23/2019 Unidad II Analisis Lexico

    22/29

    2 3 Diseo de un Analizador

    Lxico

    Diagrama de Estados

    A travs de un diagrama de estados, se puede representar un autmata,

    un diagrama de estados de un autmata es un grafo dirigido, donde:

    Los nodos representan a estados (cada nodo es etiquetado con elnombre del estado).

    Los arcos representan a transiciones entre los estados.

    Cada arco lleva una etiqueta que indica qu smbolo de entrada provoca

    la transicin correspondiente.

    Si es necesario distinguir al estado inicial, se marca con una .

    los estados finales irn recuadrados o encerrados.

  • 7/23/2019 Unidad II Analisis Lexico

    23/29

    2 3 Diseo de un Analizador

    Lxico

    Reconocimiento de palabras con autmatas

    Una de las aplicaciones ms importantes de los autmatas finitos

    deterministas, es el reconocimiento de palabras y lenguajes. El

    proceso de reconocimiento es el siguiente:

    El autmata comienza en el estado inicial cuando recibe la primera

    letra de la palabra y transita al estado siguiente a partir del estado

    actual, se vuelve a procesar la siguiente letra para pasar de forma

    iterativa a los siguientes estados.

    Al finalizar de procesar la palabra, si se llega a un estado final, la

    palabra es aceptada por el autmata. En caso contrario, se considera

    rechazada.

  • 7/23/2019 Unidad II Analisis Lexico

    24/29

    2 3 Diseo de un Analizador

    Lxico

    Tabla de transicin.

    Es una representacin clsica de una funcin con dos argumentos. En

    las filas se colocarn los estados y en las columnas los smbolos del

    alfabeto de entrada.

    Cada interseccin fila (estado q)columna (carcter a) corresponde

    al estado f(q,a).

    El estado inicial se representa con Los estados finales con un *

  • 7/23/2019 Unidad II Analisis Lexico

    25/29

    2 3 Diseo de un Analizador

    Lxico

    Ejemplo:

  • 7/23/2019 Unidad II Analisis Lexico

    26/29

    2 3 Diseo de un Analizador

    Lxico

    Diagrama de Transicin.

    Es un grafo en el que los vrtices representan los distintos estados y

    los arcos las transiciones entre los estados.

    Cada arco va etiquetado con el smbolo que corresponde a dicha

    transicin.

    El estado inicial se representa con

    Los estados finales con un doble crculo.

  • 7/23/2019 Unidad II Analisis Lexico

    27/29

    2 3 Diseo de un Analizador

    Lxico

    La indeterminacin en el caso que falten transiciones para algunas

    entradas se resuelve incluyendo un nuevo estado, llamado deabsorcin o muerto, al cual llegan todas las transiciones no

    definidas.

  • 7/23/2019 Unidad II Analisis Lexico

    28/29

    2 3 Diseo de un Analizador

    Lxico

  • 7/23/2019 Unidad II Analisis Lexico

    29/29

    Fin de la Unidad II.!!!!!!!

    Prximo examen..