20
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CUAUTITLÁN IZCALLI FORMATO DE ENTREGA DE EVIDENCIAS Código: FO-205P11000- XX Página 1de20 DIVISIÓN. INGENIERÍA EN SISTEMAS COMPUTACIONES GRUPO. ASIGNATURA. LENGUAJES Y AUTÓMATAS I DOCENTE. - NOMBRE DEL ALUMNO. NO. DE CONTROL. FECHA Nº ACTIVIDAD NOVIEMBRE 2014 PRODUCTO. Unidad 5 CALIFICACIÓN Y FIRMA DEL PROFESOR. INDICE UNIDAD 5 ANÁLISIS LEXICO 5.1 Funciones del analizador léxico..................2 5.2 Componentes léxicos, patrones y lexemas..........5 5.3 Creación de tablas de tokens.....................6 5.4 Errores léxicos.................................. 8 5.5 Generadores de analizadores léxicos.............10 5.6 Aplicaciones (Caso de estudio)..................10 REFERENCIAS BIBLIOGRAFICAS..........................13 1

Lenguajes y Autómatas 1 Unidad 5

Embed Size (px)

DESCRIPTION

Trabajo de la quinta unidad desarrollada

Citation preview

DIVISIN.INGENIERA EN SISTEMAS COMPUTACIONESGRUPO.

ASIGNATURA. LENGUAJES Y AUTMATAS IDOCENTE.-

NOMBRE DEL ALUMNO.NO. DE CONTROL.FECHAN ACTIVIDAD

NOVIEMBRE 2014

PRODUCTO.Unidad 5CALIFICACIN Y FIRMA DEL PROFESOR.

INDICE

UNIDAD 5ANLISIS LEXICO5.1Funciones del analizador lxico25.2Componentes lxicos, patrones y lexemas55.3Creacin de tablas de tokens65.4Errores lxicos85.5Generadores de analizadores lxicos105.6Aplicaciones (Caso de estudio)10REFERENCIAS BIBLIOGRAFICAS13

UNIDAD 5

ANLISIS LEXICO

5.1 Funciones del analizador lxicoUn analizador lxico asla el analizador sintctico de la representacin de lexemas de los componentes lxicos.El analizador lxico opera bajo peticin del analizador sintctico devolviendo un componente lxico conforme el analizador sintctico lo va necesitando para avanzar en la gramtica.Los componentes lxicos son los smbolos terminales de la gramtica.Suele implementarse como una subrutina del analizador sintctico. Cuando recibe la orden obtn el siguiente componente lxico, el analizador lxico lee los caracteres de entrada hasta identificar el siguiente componente lxicoDEFINICIONESTokensSmbolos terminales de una gramtica

o Identificadores, palabras reservadas, operadores,...

o Varios signos pueden forman el mismo token

AtributosInformacin adicional que tiene el token, de utilidad para el anlisis sintctico y semntico.

Componentes lxicos (tokens)Unidad mnima de informacin que significa algo a la hora de compilar; concepto de palabra; las fases de un lenguaje constan de cadenas de componentes lxicos.

LexemaUna secuencia de caracteres de entrada que comprenden un solo componente lxico se llama lexema; cadena de caracteres que extrae el componente abstracto del componente lxico.

PatrnDescripcin de la forma que han de tomarlos lexemas para ajustarse a un componente lxico.Otras FuncionesManejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres, cerrarlo y gestionar posibles errores de lectura.

Eliminar comentarios, espacios en blanco, tabuladores y saltos de lnea (caracteres no vlidos para formar un token).Inclusin de ficheros: # include...

La expansin de macros y funciones in line: # define...Contabilizar el nmero de lneas y columnas para emitir mensajes de error.

Reconocimiento y ejecucin de las directivas de compilacin (por ejemplo, para depurar u optimizar el cdigo fuente).

Aspectos del Anlisis Lxico.a) Diseo ms sencilloLos smbolos que trata el scanner se describe con una gramtica ms simple que la del parser, gramtica regular

b) Mejora la eficienciaGran parte del tiempo de compilacin se consume en la lectura y exploracin de caracteres.

c) Mejora la portabilidadSe pueden tener varias versiones del scanner una para distintos cdigos (EBCDID, ASCII, ...), con el mismo parser

d) Descarga el anlisis sintcticoEjemplo; no puedo distinguir en FORTRAN hasta despus del 1o DO 5 I=1.25o DO 5 I=1,25

5.2 Componentes lxicos, patrones y lexemas

Componente lxico (token)

Son las unidades lgicas que genera el analizador lxico. Formar caracteres en tokens es muy parecido a formar palabras en un lenguaje natural

Es el conjunto de cadenas de entrada que produce como salida el mismo componente lxico. Cada token es una secuencia de caracteres que representa una unidad de informacin en el programa fuente. Los componentes lxicos ms comunes son los siguientes: palabras clave o reservadas:

Operadores aritmticos Operadores Relacionales Operadores lgicos Operador de asignacin Identificadores Constantes Cadenas Literales Signos de puntuacin LibrerasLexemaRepresentan cadenas de caracteres en el programa fuente que se pueden tratar juntos como una unidad lxica. Un lexema es una secuencia de caracteres en el programa fuente con la que concuerda el patrn para un componente lxico.PatrnRegla que describe el conjunto de lexemas que pueden representar a un determinado componente lxico en los programas fuente. En otras palabras, es la descripcin del componente lxico mediante una regla.

Atributos de los componentes lxicosEl analizador lxico recoge informacin sobre los componentes lxicos en sus atributos asociados. Los componentes lxicos influyen en las decisiones del anlisis sintctico y los atributos en la traduccin de los componentes lxicos:

Apuntador a la entrada de la Tabla de smbolos donde se guarda la informacin sobre el componente lxico.El lexema para un identificadorEl nmero de lnea en que se encontr por primera vez.

5.3 Creacin de tablas de tokens

TablaConjunto de pares clave-valor, llamados elementos de la tabla. La tabla de smbolos es una componente necesaria de un compilador. Al declarar un identificador (normalmente una sola vez), ste es insertado en la tabla. Cada vez que se utilice el identificador se realizar una bsqueda en la tabla para obtener la informacin asociada (el valor).Bsqueda Dada la clave de un elemento, encontrar su valor.InsercinDado un par clave-valor, aadir un elemento nuevo a la tabla.

Cambio de valorBuscar el elemento y cambiar su valor.BorradoEliminar un elemento de la tabla.Longitud de bsqueda (o tiempo de acceso)De una clave Li = nmero de comparaciones con elementos de la tabla para encontrar esa clave. Mxima LM = nmero mximo de comparaciones para encontrar cualquier clave. Media (esperada)Lm = nmero medio de comparaciones para encontrar un valor. Si la frecuencia de todas las claves es la misma:Lm = (S Li)/NSi la frecuencia de todas las claves no es la misma:Lm = S pi.Li

Grado de ocupacins = n/N donde n=nmero de elementos en la tabla y N=capacidad mxima de la tabla. Funcin de bsqueda: B : KE asocia a cada clave k un elemento B(k).

Valor asociado a una clave k: v(B(k)). Puede ser mltiple, en cuyo caso normalmente se convierte en un puntero. Si est en la tabla puede almacenarse consecutivamente o en subtablas paralelas. Tablas de smbolos (identificadores) La clave es el identificador. El valor est formado por: Atributos del identificador Puntero a la posicin de memoria asignada. La clave puede sustituirse por un puntero. Los identificadores pueden estar empaquetados. La longitud del identificador puede especificarse en la tabla o delante del nombre, o ser implcita.

Tablas consecutivas: Todos los elementos ocupan posiciones de memoria adyacentes. Tablas ligadas: cada elemento apunta al siguiente. Tablas doblemente ligadas: cada elemento apunta al siguiente y al anterior. Tablas no ordenadas Insercin: en el primer lugar vaco.

5.4 Errores lxicosEl anlisis lxico constituye la primera fase, aqu se lee el programa fuente de izquierda a derecha y se agrupa en componentes lxicos (tokens), que son secuencias de caracteres que tienen un significado. Adems, todos los espacios en blanco, lneas en blanco, comentarios y dems informacin innecesaria se elimina del programa fuente. Tambin se comprueba que los smbolos del lenguaje (palabras clave, operadores,...) se han escrito correctamente.

Como la tarea que realiza el analizador lxico es un caso especial de coincidencia de patrones, se necesitan los mtodos de especificacin y reconocimiento de patrones, y estos mtodos son principalmente las expresiones regulares y los autmatas finitos. Sin embargo, un analizador lxico tambin es la parte del traductor que maneja la entrada del cdigo fuente, y puesto que esta entrada a menudo involucra un importante gasto de tiempo, el analizador lxico debe funcionar de manera tan eficiente como sea posible.Son pocos los errores simplemente en el nivel lxico ya que tiene una visin muy restringida de un programa fuente. El analizador lxico debe devolver el componente lxico de un identificador y dejar a otra fase se ocupe de los errores.

Suponga que una situacin en la cual el analizador lxico no puede continuar porque ninguno de los patrones concuerda con un prefijo de la entrada. Tal vez la estrategia de recuperacin ms sencilla sea recuperacin EN MODO PANICO (este mtodo de recuperacin es donde se borra caracteres sucesivos de la entrada hasta que el analizador lxico pueda encontrar un componente lxico bien formado). Los programas no siempre son correctos!!

El compilador tiene que:Reportar clara y exactamente la presencia de errores

Recuperarse de cada error lo suficientemente rpido para poder detectar errores subsiguientes:

Tratar de evitar mensajes falsos de error Un error que produce un token errneo Errores lxicos posibles

Un token o componente lxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programacin. Ejemplos de tokens, podran ser palabras clave (if, while, int), identificadores, nmeros, signos, o un operador de varios caracteres. Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de un programa, surgen en la primera fase, llamada anlisis lxico.

5.5 Generadores de analizadores lxicos

Se pueden usar varias tcnicas para acelerar el algoritmo y ahorrar espacioLas etiquetas pueden guardarse mediante dispersin para producir un sistema de firmas que acelere sus bsquedas

Como las tablas de transiciones son muy escasas, se pueden guardar en una lista corta que se consulte cada vez que se necesite hacer una transicin a partir de un estado

Estas listas no suelen tener ms de tres o cuatro elementos, as que su bsqueda ser razonablemente rpida

5.6 Aplicaciones (Caso de estudio)Los componentes lxicos que reconocer el analizador, en donde se clasifican los diversos tipos de componentes.Para cada componente se construye un AFD que permita identificar el patrn de smbolos que deber recibir y donde deber terminar ese patrn que seale que ah se encontr un componente. Todos los AFDs se integran en un solo diagrama.Finalmente se determina la matriz de transicin de estados, que no es ms que transcripcin del AFD integrado, en dondelas columnas son los smbolos que acepta el analizador. Lo que resta es crear un algoritmo de reconocimiento de cadenas y aadir mediante una seleccin de casos para tomar la accin correspondiente segn la cadena encontrada.En este post analizaremos como crear uno sencillo, en VB.He preferido crear un autmata programable personal, aplicando los conceptos de implementacin del analizador lxico. Autmata.Este autmata se encuentra realizado enVB.La tabla de smbolos se encuentra en memoria y no en disco.Tengo que procesar todos los elementos, creados en la tabla de smbolos.

Estos son los identificadores definidos (total 49 lexemas) para la tabla de smbolos.

Diagrama de transiciones.

Ventana del ejemplo aplicado.

Cdigo cuando se pulsa una tecla.

REFERENCIAS BIBLIOGRAFICAS

Acosta, I. F. (s.f.). TECNOLOGICO DE LAGUNA. Obtenido de MONOGRAFIAS.COM: http://www.monografias.com/trabajos-pdf/automatas-finitos/automatas-finitos.pdf

Cases Muoz , R., & Mrquez Villodre, L. (2002). Lenguajes, gramticas y autmatas . Mxico D.F: ALFAOMEGA.

DOCUWIKI. (s.f.). Obtenido de http://sistemas.uniandes.edu.co/~isis1106/dokuwiki/lib/exe/fetch.php?media=bibliografia:capitulo3.pdf

FILE WORDPRESS. (s.f.). Obtenido de http://matedis.files.wordpress.com/2011/07/mc3a9todo-de-thompson.pdf

G, V. (s.f.). BLOGSPOT. Obtenido de http://automatas-finitos.blogspot.mx/Galeon.com. (s.f.). Obtenido de http://10380054.galeon.com/u2.htm

INGENIERIA INFORMATICA. (s.f.). Obtenido de http://ocw.uc3m.es/ingenieria-informatica/teoria-de-automatas-y-lenguajes-formales/material-de-clase-1/tema-3-automatas-finitos

ULPCG. (s.f.). Obtenido de http://www2.dis.ulpgc.es/~mluengo/automatas/teoria/tema2.pdf