La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison.

Présentations similaires


Présentation au sujet: "Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison."— Transcription de la présentation:

1 Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison

2 Analyseur ascendant Il sagit dun automate à pile déterministe avec deux types de transitions: – Déplacement (Shift): Action de placer le symbole dentrée courant sur le dessus de la pile et davancer la tête de lecture au prochain symbole dentrée. – Réduction: Sil existe une règle T w et que w est sur le dessus de la pile alors une réduction consiste à remplacer w par T.

3 Analyseur ascendant Le comportement d'un parseur ascendant est indiqué par deux tables: La table ACTION indique si un déplacement ou une réduction doit avoir lieu étant donné l'état courant et le prochain terminal La table GOTO indique quel état on doit placer sur le dessus de la pile après qu'une réduction ait eu lieu.

4 Exemple On a la grammaire: 1.E E + T 2.E T 3.T T * F 4.T F 5.F ( E ) 6.F id Les tables ACTION et GOTO sont habituellement construite à l'aide d'un programme telle que YACC ou GNU bison

5 Les tables ACTION et GOTO

6 Analyseurs ascendants (suite) PileEntréeAction 0id + id * id $ Shift 5 0 id 5+ id * id $ Reduce 6 (GOTO[0,F]) 0 F 3+ id * id $ Reduce 4 (GOTO[0,T]) 0 T 2+ id * id $ Reduce 2 (GOTO[0,E]) 0 E 1+ id * id $ Shift 6 0 E 1 + 6id * id $ Shift 5 0 E 1 + 6 id 5* id $ Reduce 6 (GOTO[6,F]) 0 E 1 + 6 F 3* id $ Reduce 4 (GOTO[6,T]) 0 E 1 + 6 T 9* id $ Shift 7 0 E 1 + 6 T 9 * 7id $ Shift 5 0 E 1 + 6 T 9 * 7 id 5$ Reduce 6 (GOTO[7,F]) 0 E 1 + 6 T 9 * 7 F 10$ Reduce 3 (GOTO[6,T]) 0 E 1 + 6 T 9$ Reduce 1 (GOTO[0,E]) 0 E 1$ Accept 1)E E + T 2)E T 3)T T * F 4)T F 5)F ( E ) 6)F id

7 Analyseurs ascendants (suite) Le non déterminisme de lautomate à pile peut provenir de deux situations: Conflit shift-reduce Conflit reduce-reduce

8 Conflits Shift-Reduce S 0 S 0 | 0 Dans la situation où 0 est au dessus de la pile et que le prochain symbole dentrée est 0, on a le choix entre faire une réduction (règle S 0) où encore mettre 0 sur la pile (shift) Bison (ou Yacc) choisit toujours le Shift dans ce cas.

9 Conflits Reduce-Reduce 1.S 0 S 0 2.S T 3.T S 0 4.T 1 Si la pile contient 0 S 0 alors il y a deux réductions possibles (règles 1 et 3) Yacc choisit toujours la première des règles dans ce cas.

10 Comprendre les tables: les items (0)S T$ (1)T 0T0 (2)T 1 Items: S _T$T _0T0 T _1 S T_$ T 0_T0 T 1_ S T$_ T 0T_0 T 0T0_ Items complets: S T$_ T 0T0_ T 1_

11 T ST_$ Signification des items 0T0 0T0 S S_T$ $ ST$_ T T0T_0 T T0T_0 0 T0T0_ 1 T1_ 0 T0T0_ 0 T0_T0 0 T0_T0 Un item de la forme Aα_β indique que l'on est en train de traiter la règle Aαβ alors que α est sur les dessus de la pile Un item complet de la forme Aγ_ indique que γ est sur le dessus de la pile et qu'on peut le remplacer par A (réduction)

12 T ST_$ Signification des items (suite) 0T0 0T0 S S_T$ $ ST$_ T T0T_0 T T0T_0 0 T0T0_ 1 T1_ 0 T0T0_ 0 T0_T0 0 T0_T0 1, T1_ 0, T0_T0 S, S_T$ Accepter S, S_T$ $, ST$_ T, ST_$ S, S_T$ T, ST_$ S, S_T$ 0, T0T0_ T, T0T_0 0, T0_T0 S, S_T$ T, T0T_0 0, T0_T0 S, S_T$ 0, T0T0_ T, T0T_0 0, T0_T0 S, S_T$ T, T0T_0 0, T0_T0 S, S_T$ Shifts (3 fois) Reduce Shift Reduce Shift Reduce ShiftReduce Analyse du mot 00100$

13 Automate fini déterministe (Enfin presque) 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T 0 T $ 1 1 0) S T$ 1) T 0T0 2) T 1 Cet automate sert à définir les tables ACTION et GOTO Chaque état correspond à un item Les mots conduisant à un item sont ceux représentant le contenu possible de la pile. Létat poubelle nest pas illustré.

14 Construction des tables à partir de l'automate ACTIONGOTO 01$T 0S2S31 1 accepter 2S2S34 3R2 4S5 5R1

15 Autre exemple Ajoutons 3 règles à la grammaire précédente: (0)S T$ (1)T 0T0 (2)T 1 (3)T 0V (4)V 2V (5)V 2

16 Automate fini non-déterministe 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T 0 T $ 1 1 6 T0_V 8 V2_V 7 V2_ 9 V2V_ 2 2 2 V 0 2 10 T0V_ V

17 Automate fini déterministe 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T $ 1 1 2,6 T0_T0 T0_V 7,8 V2_ V2_V 9 V2V_ 2 2 V 0 0 T 10 T0V_ V Après la transformation, chaque état correspond à un ensemble d'items.


Télécharger ppt "Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison."

Présentations similaires


Annonces Google