Informatique et recherche
opérationnelle
IFT2030

Concepts des langages de programmation

Automne 2002


Accueil

Professeur et
Démonstrateurs

Horaires et locaux

Notes de cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Démonstration 5: Révisions INTRA

Pas de "baratin" cette semaine, les démonstrateurs vous parlerons de:
  • programmation modulaire en C (.h .c): différencier les déclarations des définitions (les .h contiennent des définitions communes à plusieurs modules, les .c des déclarations).
  • écrire un petit makefile (le but est ici de vous faire écrire le makefile que vous devez remettre pour le tp1).
  • n'hésitez pas à leur poser des questions, c'est la dernière fois avant la semaine de relache que vous en aurez l'occasion.

Voici quelques liens qui vous seront peut-être utiles si vous souhaitez approfondir la modularité en C/C++ (un seul de ces liens est suffisant):


Travail pratique (pas noté mais fortement recommandé)

Ceci comprend également les premiers cours sur les grammaires, aussi je vous donne quelques exercices de révision.

1) Grammaires ambiguës

Prouvez que la grammaire suivante est ambiguë:
S -> A
A -> A + A | id
id -> a | b | c

2) Langage décrit

A) Quel est le langage décrit par cette grammaire (où S est l'axiome) ?
S -> a S | b
B) Quel est le langage décrit par cette grammaire (où S est l'axiome) ?
S -> a S b | ab
C) Quel est le langage décrit par cette grammaire (où S est l'axiome) ?
S -> A B
A -> a A | a
B -> B b | b
D) Quel est le langage décrit par cette grammaire (où S est l'axiome) ?
S -> A B C
A -> a A | a
B -> b B | b
C -> c C | c

3)

Soit la grammmaire (S l'axiome):
S -> a S c B | A | b
A -> c A | c
B -> d | A
Parmi les chaînes suivantes, quelles sont celles qui font parti du langage décrit par cette grammaire:
  • abcd
  • acccbd
  • acccbcc
  • acd
  • accc

4) Arbres de dérivation

Soit la grammmaire (assign est l'axiome):
assign -> id = expr
id     -> a | b | c
expr   -> expr + term | term
term   -> term * factor | factor
factor -> (expr) | id 
A) Dessiner un arbre dérivation pour les chaînes suivantes:
  • a = ( a + b ) * c
  • a = b + c + a
  • a = a * (b + c)
  • a = b * (c * (a + b))
B) Écrire une dérivation gauche de la première chaîne (a = ( a + b ) * c)

5) Grammaires LL1

A) la grammaire suivante est-elle LL1? Pourquoi ?
S  -> a S1 | b S2
S1 -> a
S2 -> b
B) la grammaire suivante est-elle LL1? Pourquoi ?
S  -> a S1 | b S2
S1 -> b
S2 -> a
C) la grammaire suivante est-elle LL1? Pourquoi ?
S  -> a S1 | b S2
S1 -> b S1 | S2
S2 -> b
D) la grammaire BNF du sujet du TP1 est-elle LL1? Pourquoi ?

E) Décrire les langages décrits par chacune des grammaires précédantes

[top]


Dernière mise à jour : Mon Oct 28 11:18:35 EST 2002
dift2030@iro.umontreal.ca