analisis lexicografico

28
 ANALISIS LEXICOGRAFIC O

Upload: thalia-tantalean

Post on 08-Oct-2015

5 views

Category:

Documents


0 download

DESCRIPTION

compiladores

TRANSCRIPT

Presentacin de PowerPoint

ANALISIS LEXICOGRAFICOINTRODUCCIONLa fase del anlisis lexicogrfico de un compilador agrupa Secuencia de caracteres en categoras: rastreo y filtrado.Rastreador mueve un apuntador a travs de la entrada un carcter a la vez para hallar cadenas continuas de caracteres, las cuales constituyen elementos textuales individuales y clasifica cada una de acuerdo con su tipo.Filtro descarta algunos de los tokens encontrados por el rastreador determina cuales otros smbolos reservados y coloca el texto de los restantes en las tablas de nombres2.1. EL PROBLEMA DEL ANALISIS LEXICOGRFICO

Dada una cadena de caracteres divdase en una cadena de tokens: token= (tipo, valor)Al tipo de un token a menudo se le llama clase; los caracteres reales se conocen como lexemas. Existen tres formalismos o modelos comunes.

Expresiones regulares. Describen los tokens como el conjunto de cadenas permitidas en un lenguaje.Diagramas de transicin. Describen los tokens como las cadenas permitidas que toman el diagrama desde un estado inicial hasta un estado final.Gramticas lineales. Describen los tokens como las cadenas generadas por una gramtica en forma especial.

2. EJEMPLOS DE TOKENS MaxNum es identificado como un token cuyo tipo es identificador y cuyo valor es un apuntador a una tabla donde MaxNum se lista como uno de los nombres definidos por el usuario en el programa.

2.3. RECONOCIMIENTO DE TOKENSEl reconocimiento de tokens es difcil en algunos lenguajes. Por ejemplo FORTRAN.DO 15 I =1,25DO 15 I=1.25La primera sentencia es una construccin iterativa llamada ciclo iterativo DO. La segunda es una sentencia de asignacin. (El valor 1.25 se asigna a a variable DO151 en FORTRAN, los espacios no son significativos).Una razn para esto es que algunas palabras como IF y DECLARE (empleadas en lenguajes de alto nivel) estn restringidas, es decir no pueden emplearse como identificadores

EJEMPLO 1

2.4. FUNCIONES PRINCIPLAES DE LOS ANALIZADORES LEXICOGRAFICOSExisten cuatro funciones principales para un analizador lexicogrfico a medida que va hallando tokens: (1) utilidades de caracteres y manejo de lneas, (2) prueba de predicado, (3) acciones y (4) manejo de errores.

2.4.1 Utilidades de caracteres y manejo de lnea.

DameCar: Mueve el apuntador de bsqueda hacia adelante y regresa el carcter siguiente.Falla: Mueve el apuntador de bsqueda hacia delante de regreso al apuntador actual.Retraer: Mueve el apuntador de bsqueda hacia delante un carcter de regreso.Aceptar: Mueve el apuntador actual hacia delante del apuntador de bsqueda hacia adelante.2.4.2 Prueba de Predicado

La prueba de predicado verifica la membresa de un conjunto de caracteres. Las utileras tpicas son:EsLetra EsDigito EsDelimitador EsCDonde EsLetra(x) es un predicado que regresa al valor verdadero si X es una letra, EsDigito(x) es un predicado que regresa al valor verdadero si x es un digito.

2.4.3 Acciones

Hay una accin en cada tipo de token.InstalaNombre: Pone el token nombre en una tabla de nombres.IsntalaLiteral: Pone el token literal en una tabla de literales.Podemos necesitar una accin para cada carcter rastreado. Por ejemplo cuando se rastrean los dgitos en un nmero, podramos tener que convertir la secuencia de caracteres a un nmero.

2.4.4 Errores

Cualquier cosa que el analizador lexicogrfico no pueda reconocer y clasificar se toma como un error.Algunos errores, como l omisin de signos de punto y coma de lenguajes que requieren de ellos, u olvidar cerrar un parntesis abierto con anterioridad, no pueden ser identificados por el analizador lexicogrfico, nicamente lee secuencias de caracteres y decide si la palabra (token) est incluida en el lenguaje o no.

2.5 DIAGRAMAS DE TRANSICIN

Los diagramas de transicin describen las acciones necesarias para reconocer un token. Formalmente un diagrama de transicin es una grfica dirigida con arcos etiquetados. Los nodos se denominan estados y los arcos se etiquetan con caracteres de entrada. A menudo se emplean un doble circulo para representar un estado final o de aceptacin.

EJEMPLO: un identificador se describe como una letra seguida por un nmero arbitrario de letras o dgitos.

Este diagrama puede describirse en seudocdigo como sigue:

{estado 1}: C:= DameCarSI Esletra (C) ENTONCES{estado 2}: Mientras Esletra (C) o EsDigito (C) hacer C:= DameCarTERMINAMIENTRAS{estado 3}: Retraer- hemos rastreado un carcter de mas T:= (Id, Instala)AceptarRegresa (t) {estado 4}: OTRO Falla- comienza la bsqueda por un token diferenteTERMINASI2.6 AUTMATAS FINITOS

Autmatas finitos, conocidos tambin como mquinas de estado finito o maquinas secuenciales.Los autmatas finitos vienen en diferentes tipos:No determinsticos (NFA, por sus siglas en Ingles)Determinsticos (DFA, por la misma razn)Determinsticos mnimos.Distinguiremos entre estos mostrando algunos ejemplos de cada uno.

EJEMPLO: Autmata finito no determinstico

La primera pregunta que podemos hacernos es Qu es lo que acepta este diagrama de transicin?, es decir, Cules caracteres de entrada podra aceptar desde el inicio o estado 0 hasta el estado final 2?La respuestas es que autmata finito describe identificadores especiales utilizados por la autora en un segmento de un sistema de software al que describi alguna vez.EJEMPLO 5: Otro autmata finito no determinstico

Aqu, LD se establece por letra o digitoNuestra primera pregunta para el autmata en el ejemplo 5 debe ser Qu significa ?

Utilizamos para indicar que puede hacerse un movimiento sin procesar ninguna entrada, y este movimiento se conoce como transicin psilon. De nueva cuenta, esto puede ocasionar una situacin no determinstica como en el estado 7, donde debe ser hecha una decisin basada solo en esta informacin si se observa una entrada y quiz ir al estado 8, o no observar ninguna entrada e ir al estado2.

La segunda pregunta debe ser de nuevo qu es lo que acepta? Mediante un examen cuidadoso, notamos que la secuencia de caracteres debe comenzar y finalizar con $. En medio puede haber cualquier nmero de letras, dgitos o signos de $, de modo que esto acepta la misma secuencia de caracteres que el ejemplo precedente.

La tercera pregunta puede ser escrito un programa de computadora en este caso? debe responderse no ya que (como se ha mostrado) ninguna computadora puede decidir basndose en ninguna otra informacin, si ve o no a los caracteres de entrada.EJEMPLO 6: Autmata finito determinstico

Esto acepta la misma secuencia de caracteres que los dos ejemplos precedentes, es decir, secuencias de letras, dgitos y signos de $, las cuales empiezan y terminan en $.Debido a que puede determinarse definitivamente que hacer para cada entrada de carcter, este es un autmata finito determinstico. Un purista requerira un autmata determinstico para tener una transicin desde cada estado en cada entrada posible. En este caso, tendramos una transicin desde cada estado 0, cuando la entrada fuera una letra o digito hacia un estado de error.Un programa de computacin puede ser escrito con facilidad para simular este autmata finito.FUNDAMENTOS DE TEORIA DE LENGUAJESLos autmatas finitos descritos en la seccin 2.6 son un formalismo para describir conjuntos de cadenas de caracteres. Son utilizados en compiladores para reconocer los tokens en un lenguaje de programacin. Existen otros tipos formalismos para describir estos mismos conjuntos. Uno de estos son las expresiones regulares.DEFINICIONES BASICAS

EXPRESIONES REGULARESUna expresin regular es una formula para denotar ciertos lenguajes. Advirtase que decimos lenguaje, no cadena de caracteres. Una expresin regular nica denota un conjunto de cadenas, es decir, un lenguaje, no una simple cadena. No todos los lenguajes pueden ser expresados utilizando una expresin regular. La siguiente tabla define en forma recursiva cuales lenguajes pueden describirse mediante expresiones regulares.

CONVERSION DE EXPRESIONES REGULARES EN AUTOMATAS FINITOS NO DETERMINISTICOSLas expresiones regulares y autmatas finitos son notaciones alternativas para el mismo tipo de lenguaje: tienen el mismo poder expresivo. Las imgenes siguientes muestran como puede ser representada una expresin regular por medio de un autmata finito no determinstico.

Este primer diagrama muestra que la expresin regular la cual denota el lenguaje que consiste de la cadena vaca {}, puede ser reconocido por el autmata finito no determinstico que va desde su estado inicial hasta su estado final sin lectura de entrada, es decir, mediante una transicin - .

Este diagrama muestra que el lenguaje {a} denotado por la expresin regular a es reconocido por el autmata finito que va desde su estado inicial hasta su estado final por medio de la lectura de una a.Aqu, presumimos que los lenguajes denotados por las expresiones regulares R1 Y R2 son LR1 y LR2 respectivamente, los cuales son reconocidos por los autmatas finitos denotados por M1 y M2. Al agregar transiciones al principio y al final se crea un autmata finito que reconocer ya sea el lenguaje representado por R1 o el lenguaje representado por R2, es decir, la unin de estos dos lenguajes LR1 U LR2.

En el diagrama 4, M1 es la maquina que acepta LR1 y M2 es el lenguaje que acepta LR2. De este modo, despus de que este autmata combinado ha reconocido una cadena permitida en LR1, comenzara a buscar cadenas permitidas en LR2. Esto es exactamente el conjunto de cadenas denotadas por R1.R2

Aqu, M es un autmata finito que reconoce a LR. Al agregar un nuevo estado inicial que es tambin un estado final, reconoce la cadena vaca . La transicin - de todos los estados finales de M a su estado inicial permitirn el reconocimiento de LiR, i=2,.