• Aucun résultat trouvé

REQ → ‘select’ COLS ‘from’ TABS CLAUSE COLS → LISTEID TABS → LISTEID CLAUSE → ‘where’ COND | ε COND → id

N/A
N/A
Protected

Academic year: 2022

Partager "REQ → ‘select’ COLS ‘from’ TABS CLAUSE COLS → LISTEID TABS → LISTEID CLAUSE → ‘where’ COND | ε COND → id"

Copied!
3
0
0

Texte intégral

(1)

IFT313 -- SOLUTIONS DU LAB 4 PAGE 1 sur 3

INTRODUCTION AUX LANGAGES FORMELS IFT313

Département d’informatique Université de Sherbrooke LAB 4 : GRAMMAIRES LL(1)

ENSEIGNANT

Froduald.Kabanza@usherbrooke.ca ASSISTANT

Francis.Bisson@usherbrooke.ca

Soit la grammaire G = (V, A, R, REQ) où :

V = {REQ, COLS, TABS, LISTEID, CLAUSE, COND}

A = {‘select’, ‘from’, ‘where’, ‘=’, ‘,’, id}

R = {

REQ → ‘select’ COLS ‘from’ TABS CLAUSE COLS → LISTEID

TABS → LISTEID

CLAUSE → ‘where’ COND | ε COND → id ‘=’ id

LISTEID → LISTEID ‘,’ id | id }

a. Expliquez clairement, en moins de trois lignes et sans faire référence à la table d’analyse, pourquoi cette grammaire n’est pas LL(1).

La grammaire G n’est pas LL(1) puisqu’elle a une règle récursive à gauche (LISTEID  LISTEID ‘,’ id) et que le symbole LISTEID est accessible à partir du symbole de départ de G.

b. Donnez une grammaire G’ équivalente, avec le moins de modifications possible, qui est LL(1).

Conseil : numérotez vos règles de production et évitez d’utiliser l’opérateur « ou » ( | ). Vous aurez à référencer ces règles aux sous questions d et e.

1. REQ → ‘select’ COLS ‘from’ TABS CLAUSE 2. COLS → LISTEID

3. TABS → LISTEID

4. CLAUSE → ‘where’ COND 5. CLAUSE → ε

6. COND → id ‘=’ id

7. LISTEID → id LISTEID2 8. LISTEID2 → ‘,’ id LISTEID2 9. LISTEID2 → ε

(2)

IFT313 -- SOLUTIONS DU LAB 4 PAGE 2 sur 3

c. Donnez les tables Nullable, First et Follow pour les non terminaux de G’.

REQ COLS TABS CLAUSE COND LISTEID LISTEID2 Nullable false false false true false false True First ‘select’ id id ‘where’ id id ‘,’

Follow $ ‘from’ ‘where’,

$ $ $ $,

‘from’,

‘where’

$, ‘from’,

‘where’

d. Donnez la table d’analyse LL(1) pour cette grammaire. Pour simplifier l’écriture des règles longues, vous pouvez les numéroter en (b) et mettre des numéros dans la table LL(1).

‘select’ ‘from’ ‘where’ ‘=’ ‘,’ id $

REQ 1

COLS 2

TABS 3

CLAUSE 4 5

COND 6

LISTEID 7

LISTEID2 9 9 8 9

e. Simulez l’exécution de l’algorithme Driver LL(1) avec la table précédemment calculée sur la chaîne « select matricule from etudiants » où matricule et etudiants sont des identificateurs (symbole terminal id).

Position 1 2 3 4 5

texte

brut select matricule from etudiants symbole

terminal select id from id $

Pour simplifier l’écriture, au lieu d’écrire la chaîne restante, écrivez plutôt la position de la tête de lecture par un entier. Lorsque le contenu d’une colonne est inchangé d’une étape à l’autre, vous pouvez écrire des guillemets ( " ) pour indiquer qu’on retrouve la même chose qu’à la ligne précédente.

Pour la colonne opération, écrivez le cas utilisé de l’algorithme Driver LL(1) : 1) Initialiser la pile : placer $ et le symbole de départ de la grammaire 2) Mise en correspondance d’un terminal (« matching »)

3) Application d’une dérivation la plus à gauche 4) Acceptation de la chaîne en entrée

(3)

IFT313 -- SOLUTIONS DU LAB 4 PAGE 3 sur 3

Cas Règle de production

(cas 3) Contenue de la pile

($ indique le fond) Pos. tête

lecture

1 REQ $ 1

3 1. REQ → ‘select’

COLS ‘from’ TABS CLAUSE

‘select’ COLS ‘from’ TABS CLAUSE $ 1

2 Lire select/select COLS ‘from’ TABS CLAUSE $ 2

3

2. COLS → LISTEID LISTEID ‘from’ TABS CLAUSE $ 2

3 7. LISTEID → id

LISTEID2 id LISTEID2 ‘from’ TABS CLAUSE $ 2

2

Lire id/matricule LISTEID2 ‘from’ TABS CLAUSE $ 3

3 9. LISTEID2 → ε ‘from’ TABS CLAUSE $ 3

2 Lire from/from ‘TABS CLAUSE $ 4

3 3. TABS → LISTEID LISTEID CLAUSE $ 4 3 7. LISTEID → id

LISTEID2 id LISTEID2 CLAUSE $ 4

2

Lire id/etudiants LISTEID2 CLAUSE $ 4

3 9. LISTEID2 → ε CLAUSE $ 5

3 5. CLAUSE → ε $ 5

4 Accepté

Références

Documents relatifs

Le SQL (Structured Query Language – langage de requêtes structuré) est un langage informatique de dialogue avec une base de données relationnelle.. Une requête est une question

Le rebroussement de la zone des Cols sous le pli plon- geant du Niesen, que nous supposons ici, est du reste tout-à-fait comparable avec ce que nous voyons dans.. le soubassement

Utilisation finale: Consommateurs Voies d'exposition: Contact avec la peau Effets potentiels sur la santé: Aigu - effets locaux Valeur: 6,4 mg/cm2. acide silicique, sel de sodium

Prévoir un sac à dos confortable de 30 à 40 litres pour vos effets de la journée (un vêtement chaud, une cape de pluie, une gourde, boite et couverts pour le pique-nique,

Certains dÈlais sont vide car les commandes en questions n'ont pas encore ÈtÈ livrÈes (valeur NULL).

J'en pa rle pa r expéd ence person nelle.. L'Ecole de ville est

FROM CLAUSE TO DISCOURSE: MANAGING WRITTEN DISCOURSE In the previous sections, we have been exploring the relationship between form and function, on the one hand,

[r]