Está en la página 1de 40

Otra manera de describir el funcionamiento de un autmata finito es mediante el uso de tablas de transiciones o matrices de estados.

salida qQ smbolo llegada (q,) Q

s1
s1 s2 s2

0
1 0 1

s2
s1 s1 s2

Las caractersticas de los autmatas finitos determinstista son: Un conjunto finito de estados y un conjunto de transiciones de estado a estado, que se dan sobre smbolos de entrada tomados de un alfabeto S . Para cada smbolo de entrada existe exactamente una transicin a partir de cada estado (posiblemente de regreso al mismo estado). Un estado, por lo general denotado como q0 es el estado inicial, en el que el autmata comienza. Algunos estados (tal vez ninguno) estn designados como final o de aceptacin

Un autmata finito no determinista (abreviado AFND) es aquel que, a diferencia de los autmatas finitos deterministas, posee al menos un estado q Q, tal que para un smbolo a del alfabeto, existe ms de una transicin (q,a) posible.

El analizador lxico es la primera fase de un compilador, lee la secuencia de caracteres del programa fuente, carcter a carcter, y los agrupa para formar unidades con significado propio, los componentes lexicos llamados tokens representan:

palabras reservadas: if, while, do, . . . identificadores: asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas,... Por ejemplo: posicin, velocidad, tiempo, . . . operadores: = * + - / == > < & ! = . . . smbolos especiales: ; ( ) [ ] { } .. ... constantes numricas: literales que representan valores enteros, en coma flotante, 982, -83.2E+2,... constantes de caracteres: literales que representan cadenas concretas de caracteres, \hola mundo",...

Manejo 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 linea (caracteres no validos para formar un token).

Contabilizar el numero 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).

Componentes Lxicos, Patrones, Lexemas Un componente lxico puede tener uno o infinitos lexemas. Por ejemplo: palabras reservadas tienen un nico lexema. Los nmeros y los identificadores tienen infinitos lexemas.

Compon. lexico
identificador Num_entero if Do op _div op _asig

lexema
indice, a, temp 1492, 1, 2 If Do / =

Patrn
Letra seguida de letras o dgitos Digito seguido de mas digitos letra i seguida de letra f letra d seguida de letra o Caracter / Caracter =

Para describir el patrn de cada componente un mtodo seria usar un AFD .-Para este mtodo se parte de una tabla descriptiva de los componentes lxicos que reconocer el analizador,en donde se clasifican los diversos tipos de componentes.

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 donde las columnas son los smbolos que acepta el analizador.

Un buffer es un espacio de memoria de un determinado nmero de bytes, en el que se almacenan datos.

Se hace uso de los buffers para poder agilizar el


trabajo de un sistema.

La modificacin de un dato se realiza sobre el buffer, que posteriormente debe ser enviado al dispositivo de almacenamiento.

La utilizacin de la tcnica de buffers permite reducir el nmero de accesos a la memoria secundaria.

Se puede determinar el nmero de buffer a utilizar dependiendo el entorno del sistema.

Utilizacin de un buffer para escritura y otro para lectura, donde cada uno lee un bloque en cada operacin.

Utilizacin de ambos bloques para lecturas y escrituras de modo alternado.

Si todos los buffers estn ocupados, se debe vaciar uno de ellos

para posibilitar una lectura.

Se pueden emplear diferentes esquemas para el manejo de buffers, pero siempre recordando que cada

esquema que vamos a emplear debe aplicarse y tomar en cuenta los parmetros con los que cuenta el sistema.

Creacin Tablas De Smbolos


Tablas de smbolos Tabla: conjunto 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).

Problemas asociados: Bsqueda: dada la clave de un elemento, encontrar su valor. Insercin: Dado un par clave-valor, aadir un elemento nuevo a la tabla. Cambio de valor: Buscar el elemento y cambiar su valor. Borrado: Eliminar 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)/N Si la frecuencia de todas las claves no es la misma: Lm = S pi.Li

Grado de ocupacin: s = 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. Bsqueda: secuencial, elemento a elemento. Lm = (n+1)/2 LM = N La bsqueda es muy lenta cuando el nmero de elementos es mayor que 20. Tablas ordenadas Los elementos se ordenan con algn criterio (p.e. alfabticamente). Bsqueda binaria o logartmica. Algoritmo de bsqueda en el bloque (1,n): Se mira el elemento (n+1)/2. Si es ese, encontrado. Si es menor, se busca en el bloque (1,(n-1)/2). Si es mayor, se busca en el bloque ((n+3)/2,n). Longitud de bsqueda:

TABLAS EN RBOL BINARIO USAN RBOLES BINARIOS. Se compara la clave k con la del elemento. Si es mayor, se va a la derecha, si es menor a la izquierda. El tiempo de bsqueda depende del orden de insercin de los elementos y slo es calculable si el rbol est equilibrado. Si no, se convierte en una lista ordenada, reordenando. Ej: G D M E A B F H. Secuencias aparentemente aleatorias pueden producir el mismo resultado.

TABLAS HASH o de entrada calculada Es el mtodo ms usado. Se trata de trasformar la clave en un ndice de entrada aplicndole una funcin Hash, I(k), que puede no ser biyectiva. Es equivalente a una tabla de acceso directo mientras no aparezcan dos claves tales que I(k1) = I(k2): colisin. Hay dos mtodos principales para resolver la colisin. Tablas Hash abiertas (con rehash) Supongamos que los elementos de T son 0,1,,N-1.

Tablas Hash con encadenamiento

Puede ser interno o con overflow Tabla Hash con encadenamiento interno Vector Hash VH: contiene punteros a la tabla para el primer elemento que corresponde a cada valor de la funcin Hash. Tabla propiamente dicha: contiene tradas (clave, valor, encadenamiento). Inserciones secuenciales. Hay un puntero a la ltima posicin ocupada o la primera libre.

Son pocos los errores que se pueden detectar al hacer anlisis lxico.

fi (a == f(x)) //Error de sintaxis

Pero puede existir algn error si ninguno de los patrones con cuerda con el prefijo de entrada

Borrar un carcter extrao


Insertar un carcter que falta Reemplazar un carcter incorrecto por otro correcto Intercambiar dos caracteres adyacentes

Utilizar un analizador lxico como FLEX. El


generador se encarga de manejar buffers. Escribir el analizador en un lenguaje de alto nivel haciendo uso de la E/S del lenguaje. Escribir el lenguaje ensamblador y manejar explcitamente la E/S.

El anlisis lxico en documentos XML lo realiza cualquier herramienta o API que utilice XML, ya que debemos cerciorarnos que el lenguaje est bien formado. Si el lenguaje no cumple con las reglas de construccin de documentos XML, falla el proceso. Realizar anlisis lxico de XML en Java o C#

Es un programa para generar analizadores lxicos. se utiliza para generar anlisis sintctico.

Se apoya para generar un codigo en c un fichero de texto plano con una estructura bien definida, donde iremos describiendo las expresiones regulares y las acciones asociadas a ella.

Seccin de declaraciones Seccin de reglas Seccin de cdigo en C

es una herramienta para la generacin de programas que realizan concordancia de patrones en texto.

También podría gustarte