TAREA - LINEA DE TIEMPO DEL INTERNET - ANTONY ASISCLO - CICLO 1 - CONTA-1.pdf
coincidencia de patros
1. 3.8.2 Coincidencia de patrones
con base en los AFNs
Si el analizador léxico simula un AFN como el de la figura 3.52, entonces debe leer la entrada que empieza en el
punto de entrda, al cual nos hemos referido como inicio Lexema. A medida que el apuntador llamado avance avanza
hacia adelante en la entrada, calcula el conjunto de estados en los que se encuentra en cada punto, siguiendo el
Algoritmo 3.22
En algún momento, la simulación del AFN llega a un punto en la entrada en donde no hay siguientes estados. En ese
punto, no hay esperanza de que cualquier prefijo mas largos de la entrada haga que el AFN llegue a un estado de
aceptación; en vede ello, el conjunto de estados siempre estará vacío. Pör ende, estamos listos para decidir sobre el
prefijo mas largo que sea un lexema que coincide con cierto patrón
3. • Buscamos hacia atrás en la secuencia de conjuntos de estados, hasta encontrar un conjunto que
incluya uno o mas estados de aceptación. Si hay varioes estados de aceptación enn ese conjunto,
elegimos el que este asociado con el primer patrón pi en la lista del programa en Lex.
Retrocedemos el apuntador avance hacia el final del lexema, y realizamos la acción Ai asociada
con el patrón pi
Ejemplo 3.27: Suponga que tenemos los patrones del ejemplo 3.36 y que la entrada empieza con
aaba. La figura 3.53 muestra los conjntos de estados del AFN de la figura 3.52 que introducimos.
Empezando con E-cerradura del estado inicial 0 , el cual es {0,1,3,7}, y procediendo a partir de ahí.
Despues de leer el cuarto símbolo de entrada, nos econtramos en un conjunto de vacio de estados,
ya que en la figura 3.52 no hay transicione salientes del estado 8 en la entrada a-
Por ende, necesitamos retroceder para buscar un conjunbto de estados que incluya un estado
aceptatante. Observe que, como se indica la figura 3.53, después de leer a nos encontramos en un
conjunto que incluye el estado 2 y, por lo tanto. Indica que el patrón a tiene una coincidencia. No
obstante, después de leer aab nos encontramos en el estado 8, el cual indica que se ha encontrado
una coincidencia con a*b+; el prefijo mas largo que nos lleva aun estado de aceptación. Por lo tanto,
selkeccionamos aab como el lexema y ejecutamos la acción A3, la cual debe incluir un regreso al
analizador sintáctico, indicando que se ha encontrado el token cuyo patrón es p3=a*b+.
4. Figura 3.53: Secuencia de los conjuntos de estados
que se introducen al procesar la entrada aaba
2
4
7
0
1
3
7
a𝑎 𝑎 𝑏 𝑎 ∗ 𝒃
+
𝒏𝒊𝒏𝒈𝒖𝒏𝒐
𝑎
5. 3.8.3AFDs para analizadores léxicos
• Otra arquitectura, que se asemeja a la salida de Lex, es convertir el
AFN para todos los patrones en un AFD equivalente, mediante la
construcción de subconjuntos de Algoritmo 3.20. Dentro de cada
estado del AFD, si hay uno o mas estados aceptantes del AFN, se
determina el primer patrón cuyo estado aceptante se representa, y
ese patrón se convierte en la salida del estado AFD.
6. Ejemplo 3.28:
• La figura 3.54 muestra un diagrama de transición de estado basado en el
AFD que se construye mediante la construcción de subconjuntos del AFN
en la figura 3.52. Los estados de aceptación se etiquetan mediante el
patrón identificado por ese estado. Por ejemplo el estado {6,8} tiene dos
estados de aceptación, los cuales corresponden a los patrones abb y
. Como el primer patrón se lista primero, ese es el patrón que se asocia con
el estado {6.8}.
• Utilizamos el AFD en un analizador léxico en forma muy parecida al AFN.
Simulamos el AFD hasta que en cierto punto no haya un estado siguiente(o
hablando en sentido estricto, hasta que el siguiente estado sea ø,el estado
muerto que corresponde al conjunto vacio de estados del AFN) . En ese
punto, retrocedemos a través de la secuencia de estados que introdujimos
asociada con el patrón para ese estado
𝒂 ∗ 𝒃
+
7. Ejemplo 3.29
• Suponga que el ADF de la figura 3.54 recibe la entrada abba. La
secuencia de estados introducidos es 0137,247,58,68 y en la 𝑎 no hay
una transición que salga de del estado 68. Por ende, consideramos la
secuencia a partir del final, y en este caso, 68 en si es un estado de
aceptación que reporta el patrón 𝑝2=𝑎𝑏𝑏
8. Figura 3.54 Grafo de transición para un AFD
que maneja los patrones a , abb y
𝒂 ∗ 𝒃+
𝒂𝒃𝒃 𝒂 ∗ 𝒃+
a∗ 𝒃
+
0137 247
8 68
58
7
𝑎
𝑎 𝑎
𝑏𝑏
𝑏
𝑏
𝑏
𝑏
a