Вы находитесь на странице: 1из 8

INSTITUTO TECNOLOGICO

DE MATEHUALA


Resumen del captulo 3
anlisis lxico
Jos ngel Gonzlez Jimnez Frida
Estefana Reina garay Julio cesar
Arzola carrillo Ana Lilia Hiracheta
vila





Anlisis Lxico.
1.-Funciones:
leer los caracteres de la entrada del programa a fuente.
agruparlos en lexemas y producir como salida una secuencia de tokens para cada lexema en el programa fuente..
eliminar los comentarios y el espacio en blanco.
correlacionar los mensajes de error generados por el compilador con el programa fuente.



Comparacin entre anlisis lxico y anlisis sintctico.
Razones por la que el compilador separa las fases:
simplificar por lo menos una de estas tareas.
Se mejora la eficiencia del compilador.
Se mejora la portabilidad del compilador.

Tokens, patrones y lexemas.

Token.
Es un par que consiste en un nombre de token y un valor de atributo opcional.
es un smbolo abstracto que representa un tipo de unidad lxica
Patrn.
Es un smbolo abstracto que representa un tipo de unidad lxica
es slo la secuencia de caracteres que forman la palabra clave.
Lexema.
Es una secuencia de caracteres en el programa fuente,
coinciden con el patrn para un token y que el analizador lxico identifica como una instancia de ese token.

Atributos para los tokens.

Errores lxicos.

Acciones de recuperacin de errores:

Eliminar un carcter del resto de la entrada.
Insertar un carcter faltan te en el resto de la entrada.
Sustituir un carcter por otro.
Transponer dos caracteres adyacentes.



2.-Uso del bfer en la entrada.


se encarga de las lee tinas por adelantado extensas sin problemas.

Par de bferes.

reducir la cantidad de sobrecarga requerida en e l procesamiento de un solo carcter de entrada.


Centinelas.
carcter especial que no puede formar parte del programa fuente.

3.-Especificacin de los tokens.

Las expresiones Regulares.

Cadenas y lenguajes.

Un alfabeto es un conjunto finito de smbolos.
Letras, signos, signos de puntuacin.
Una cadena sobre un alfabeto es una secuencia finita de smbolos que se extraen de ese
alfabeto.
Un lenguaje e s cualquier conjunto contable de cadenas sobre algn alfabeto fijo.

Operaciones con lenguajes.

Son: concatenacin, unin e interseccin.

Expresiones Regulares.

Describir todos los Lenguajes que puedan describirse.


Definiciones regulares.

Extensiones de las expresiones regulares.

Una o ms instancias.
Cero o una instancia.
Clases de caracteres.


4.-Reconocimiento de tokens














Los tokens: son palabras o smbolos propios del lenguaje
que deben de separarse para poder ser entendidos por el
compilador.
identificadores
Nmeros
Operadores
Identificadores






























Se deben de tomar en cuenta algunos puntos importantes al crear diagramas de transicin de estados
Los cuales son:


1.-se dice que ciertos estados son de aceptacin o finales,
he indican que se ha encontrado un lexema.



2.- un estado se designa como estado inicial y se identifica con una lnea que no proviene de ninguna parte




3.- si es necesario retroceder el apuntador una posicin entonces debemos de colocar un * cerca del estado de aceptacin



Reconocimiento de las palabras reservadas y los identificadores

Muy frecuentemente se confunde las palabras reservadas con los identificadores
Pero esto se puede solucionar de dos maneras:
1.- crear diagramas de transicin de estados separados para cada palabra reservada




2.- instalar las palabras reservadas en la tabla de smbolos desde el principio. Un campo en la entrada de smbolos indica que estas cadenas nunca
sern identificadores ordinarios y nos dicen que tokens representan
El reconocimiento de tokens: es el anlisis lxico para poder determinar en una instruccin el nmero de tokens que
contiene.
Diagramas de transicin de estado
Son diagramas de estado que muestran el conjunto de estados por los cuales pasa un objeto durante su ejecucion
Como paso intermedio en la construccin de un analizador lxico se crea un diagrama de flujo llamado diagramas de
transicin de estados, estos tienen una coleccin de nodos o crculos llamados estados
Cada estado representa una condicin que podra ocurrir durante el
proceso de explorar la entrada
S2
Cada lnea se dirige de un estado a otro del diagrama y cada
lnea se etiqueta con un smbolo o conjunto de smbolos
otro
*
digito


5.-El generador de analizadores lxicos lex

Es una herramienta conocida como Lex o Flex, la cual nos permite especificar un analizador lxico mediante la especificacin de expresiones regulares
para describir patrones de los tokens.

La notacin de entrada para esta herramienta es el lenguaje Lex, la cual es en s, el compilador Lex. Este transforma los patrones de entrada en un
diagrama de transicin y genera cdigo en un archivo llamado lex.yy.c que simula el diagrama de transicin.





Uso de lex

%{
#include
int palabra=0, numero=0;
%}
Numero -?[0-9]+
Palabra [a-zA-Z]+
una de las primeras cosas a notar, son las dos lneas "%%" que sirven como separadores para las tres secciones de una especificacin lex, la primera,
la de definiciones, sirve para definir cosas que se van a usar en el programa resultante o en la misma especificacin, Podemos ver dos tipos de
declaraciones, declaraciones de C y declaraciones de lex, las de C son aquellas encerradas entre dos lneas %{ y %} respectivamente que le indican
a lex, cuando se incluye cdigo que ser copiado sin modificar al archivo generado en C (tpicamente lex.yy.c).
Las declaraciones de lex estn formadas por un nombre o identificador y su respectiva expresin regular.

Reglas
Esta seccin tambin puede incluir cdigo de C encerrado por %{ y %}, que ser copiado dentro de la funcin yylex()


Estructura de los programas lex

Un programa en lex tiene la siguiente forma
Declaraciones: esta seccin incluye declaraciones de variables, constantes de manifiesto y definiciones regulares.
Reglas de traduccin: estn compuestas por dos partes
1.- patrn: cada patrn es una expresin regular la cual puede usar
las definiciones regulares de las declaraciones.
2.-accin: es un fragmento de cdigo generalmente escrito en c
Funciones auxiliares: esta seccin contiene las funciones adicionales que se utilizan en las acciones de manera alternativa


Autmatas finitos
Los autmatas finitos son reconocedores; slo d icen s o n o en relacin con cada posible cadena de entrada.

Los autmatas finitos pueden ser de dos tipos:
Los autmatas finitos no deterministas (A F N) no tienen restricciones en cuanto a las etiquetas de sus lneas. Un smbolo puede etiquetar a varias
lneas que surgen del mismo estado, y , la cadena vaca, es una posible etiqueta.
Los autmatas finitos determinista s (A FD) tienen, para cada estado, y para cada smbolo de su alfabeto de entrada, exactamente una lnea con ese
smbolo que sale de ese estado.

Un autmata finito no determinista (A F N ) consiste en:

1 . Un conjunto finito de estados S.
2. Un conjunto de smbolos de entrada E , el alfabeto de entrada. Suponemos que e, que representa a la cadena vaca, nunca ser miembro de E.
3. U n a funcin de transicin que proporciona, para cada estado y para cada smbolo en E
U { e } , un conjunto de estados siguientes.
4 . Un estado so de 5, que se distingue como e l estado inicial
5. Un conjunto de estad os F, un subconjunto de 5, que se distinguen como los estados aceptantes (o estados finales).


Tabla de transicin

Tambin podemos representar a un A F N mediante una tabla de transicin, cuyas filas corresponden a los estados, y cuyas columnas corresponden
a los smbolos de entrada y a e. La entrada para un estado dado y la entrada es e l valor de la funcin de transicin que se aplica a esos argumentos.
Si la funcin de transicin no tiene informacin acerca de esa par estado-entrada, colocamos 0 en la tabla para ese estado.

8.-Diseo de un Generador de analisadores lxicos
3.8.1Estructura del analizador generado:








Componentes:
Tabla de transiciones
Funciones que pasan del LEX a la salida
Las acciones del programa de entrada, que aparecen como fragmentos de cdigo que el simulador del autmata debe invocar en el
momento apropiado.

Pasos para construir el autmata:
1. Tomar patrn del LEX convertirlo a AFN mediante el algoritmo
2. Combinar todos los AFN en uno solo
3. Introducir un nuevo estado inicial con transiciones en E para cada uno de los estados iniciales en Ni

Ej.

Coincidencia de patrones:

Cuando un AFN llega a un punto donde no hay ms estados y el AFN no llega a un estado de aceptacin, asi que el conjunto de estados siempre
estar vaco. Por ende, estamos listos para decidir sobre el prefijo ms largo q u e sea un lexema que coincide con cierto patrn.
Se busca hacia atrs un conjunto de estados en el cual haya estados de aceptacin.
3.8.3 AFNs para analizadores lxicos:

Se convierte el AFN para todos los patrones en un AFD equivalente construyendo subconjuntos del algoritmo Dentro de cada estado del AFD, si
hay uno o ms estados aceptantes del AFN, se determina el primer patrn cuyo estado aceptante se representa, y ese patrn se convierte en la
salid a del estado AFD.


9.-Optimizacin de los buscadores por concordancia de patrones basados en AFD

3 algoritmos para la optimizacin:
1. Construye un AFD directamente a partir de una expresin regular
2. Disminuye al mnimo el nmero de estados de cualquier AFD
3. produce representaciones ms compactas de las tablas de transicin que la tabla estndar bidimensional.

Estados significativos de un AFN

Se le llama estado significativo si tiene una transicin de salida que no sea E.
Los estados significativos del A F N corresponden directamente a las posiciones en la expresin regular que contienen smbolos del alfabeto.

Funciones calculadas a partir del rbol sintctico

Para construir un A F D directamente a partir de una expresin regular, construimos su rbol sintctico y despus calculamos cuatro funciones:
anulable, primera, ultima y siguiente.
1. Anulable: la sobrexpresin puede hacerse nula o puede ser la cadena vaca, aun cuando pueda representar tambin a otras cadenas
2. Primera: es el conjunto de posiciones en el subrbol con raz en n que corresponde al primer smbolo de por lo menos una cadena en el
lenguaje de la subexpresin con raz en n.
3. Ultima: es el conjunto de posiciones en el subrbol con raz en n que corresponde al ultimo smbolo de por lo menos una cadena en el
lenguaje de la sobrexpresin con raz en n.
4. Siguiente: Es el conjunto de posiciones en q en todo rbol sintctico


3 .9 .3 Clculo de anulable, primer etapas y ultima
Podemos calcular a anulable, primera pos y ultima mediante recursividad directa sobre la altura del rbol. Las reglas para ultima son en esencia las
mismas que p ara primera, pero las funciones de los hijos C1 y C2 deben intercambiarse e n la regla para un nodo-concat.



3Clculo de siguiente
Por ltimo, necesitamos ver cmo calcular siguiente. Slo hay d os formas en que podemos
hacer que la posicin de una expresin regular sig a la otra.

1. Si n es un nodo-concat con el hijo izquierdo C\ y con el hijo derecho, entonces para
cada posicin i en ultima posicin, todas las posiciones en primera se encuentran en
siguiente.
2. Si n e s un nodo-asterisco e i es una posicin en ultima, entonces todas las posiciones
en primera p o s(n ) s e encuentran en siguiente.

Conversin directa de u n a expresin regular a un A F D

1. Construir un rbol sin tctico a partir de la expresin regular
2. Calcular anulable primera ultima y siguiente
3. Construir listados


Minimizacin de estados de un AFD

ENTRADA: U n AFDD con un conjunto de esta d o s 5, e l alfabeto de entrada E, el estado
inicial s0 y el conjunto de estad os de aceptacin F.
SALIDA: Un AFDD', que acepta el mismo lenguaje que D y tiene el menor nmero de estados
posible.

3.9.8 Intercambio de tiempo por espacio en la simulacin de un AFD
La manera ms sim p le y rpida de representar la funcin de transicin de un AFD es u n a tabla bidimensional indexada por estados y caracteres.
Dado un estado y el siguiente carcter de entrada, accedemos a l arreglo para encontrar el siguiente esta d o y cualquier accin especial que
debemos tomar; por ejemplo, devolver un token al analizador sin tctico. Como un analizador lxico ordinario tiene varios cien tos de estad os en su
AFD e involucra al alfabeto A SC II de 128 caracteres de entrada, el arreglo consume menos de un megabyte.

Вам также может понравиться