Download Fichier PDF
Transcript
76 Chapitre 5. Compilation du filtrage syntaxique e0 f e1 g ω e2 ω e3 fω a e4 f ga ceci est un jumpNode fω Fig. 5.7 – Cet automate a été construit à partir d’une clôture réduite , mais n’étant pas canonique, une règle de transition d’états (δi = (e2 ,ω) −→δ e3 ) a été ajoutée afin de permettre un changement de branche et remettre en cause le dernier choix effectué. Il permet en particulier de reconnaı̂tre le terme f gb sans bloquer l’automate dans l’état e2 . nous proposons d’étendre l’automate à mémoire, en lui ajoutant des règles de transition d’états et une règle de transition de configuration, pour l’affranchir de ces deux étapes de mémorisation et de recherche. Commençons par faire quelques remarques : – lorsque l’automate doit s’arrêter et faire une recherche, il est forcément dans un état d’où aucune arête étiquetée par un ω ne part ; – si l’automate trouve, dans sa mémoire, un état e1 (appelé choix-ω ) d’où part une arête étiquetée par un ω (δi : (e1 ,ω) −→δ e2 ) lui permettant, en utilisant le troisième mode de déplacement, d’atteindre une position plus à droite, cet état e1 peut être déterminé statiquement en analysant la structure de l’automate : pour chaque état susceptible d’arrêter l’automate, il suffit de parcourir en sens inverse les arêtes jusqu’à trouver un embranchement avec une arête ω qui aurait permis d’atteindre un point plus à droite sur la bande de lecture. Si aucun choix-ω n’est trouvé, c’est qu’aucun état convenable n’aurait été trouvé dans la mémoire et l’automate peut potentiellement se bloquer ; – étant donné un état e susceptible d’arrêter l’automate et son choix-ω (δi : (e1 ,ω) −→δ e2 ) correspondant, le fait d’ajouter une règle de transition d’états δj : (e,ω) −→δ e2 appelée jumpNode (voir figure 5.7), permettant de passer de l’état bloquant e à l’état e2 , en utilisant le troisième mode de déplacement de la tête de lecture, simule le comportement de l’automate à mémoire. L’automate de filtrage est une représentation d’un ensemble de suffixes L. Si, après avoir lu une suite de symboles α ∈ Σ∗ , un choix entre le symbole s et ω apparaı̂t, c’est que les deux termes αst1 . . . t#s β et αωβ 0 appartiennent à l’ensemble L. Pour tout état e, susceptible de bloquer l’automate, tel que e soit un état de la branche correspondant à st1 . . . t#s (en supposant qu’il n’y a pas de choix-ω dans cette branche), un jumpNode, reliant e à l’état fils de l’arête ω, doit être créé. Partant d’un automate de filtrage correspondant à une clôture réduite , la construction d’un automate de filtrage avec jumpNode se décompose en trois étapes : 1. si aucune arête étiquetée par le symbole ω ne part de l’état initial e0 , un état particulier d’échec ej ainsi qu’une règle de transition d’états δi = (e0 ,ω) −→δ ej sont ajoutés à l’automate pour permettre de prendre en compte un échec du filtrage.