coincidencia de patros

8
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

Transcript of coincidencia de patros

Page 1: coincidencia de patros

3.8.2 Coincidencia de patrones con base en los

AFNsSi 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

Page 2: coincidencia de patros

Figura 3.52:AFN Combinado

Inicio

7

1

3 4 5

8

2

𝑎 𝑏

6

Page 3: coincidencia de patros

• 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+.

Page 4: coincidencia de patros

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𝑎 𝑎 𝑏 𝑎∗𝒃+¿ ¿

𝒏𝒊𝒏𝒈𝒖𝒏𝒐𝑎

Page 5: coincidencia de patros

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.

Page 6: coincidencia de patros

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

𝒂∗𝒃+¿ ¿

Page 7: coincidencia de patros

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 =

Page 8: coincidencia de patros

Figura 3.54 Grafo de transición para un AFD que maneja los patrones a , abb y a

0137 247

8 6858

7

𝑎𝑎 𝑎

𝑏𝑏

𝑏 𝑏

𝑏

𝑏

a