:: Enseignements :: ESIPE :: E4INFO :: 2007-2008 :: Compilation ::
[LOGO]

Introduction aux grammaires


L'objectif de ce TD est de se familiariser avec les grammaires algébriques, les arbres de dérivation et la désambiguïsation des grammaires.

Exercice 1 - Grammaires

  • Écrire une grammaire G1 qui reconnaît le langage des palindromes (mots non vides qui peuvent se lire de droite à gauche et de gauche à droite) sur l'alphabet {a,b} ;
  • Écrire une grammaire non ambiguë G2 qui reconnaît les mots du langage décrit par l'expression rationnelle a*b* et qui contient plus (strictement) de a que de b ;
  • Dessiner l'arbre de dérivation pour la grammaire G2 du mot aaaabb.

Exercice 2 - Grammaires et Java

  • Écrire une grammaire qui reconnaît les suites de déclarations de méthodes dans les interfaces Java.
  • Donner l'abre de dérivation de la suite de déclarations suivantes :
    					
    	public void m(int i) throws Ex1, Ex2;
    	int m(Objct o);
    						
    					 

Exercice 3 - Parenthèses

Soit la grammaire suivante :
G3 S ::= E '$' E ::= EE
E ::= '(' E ')' E ::= ε
  • Donner un arbre de dérivation de (()()) pour cette grammaire.
  • Cette grammaire est-elle ambiguë ? Expliquer.
  • Proposer une autre grammaire équivalente qui ne soit pas ambiguë.
  • Le langage décrit par cette grammaire peut-il être décrit par une expression rationnelle ?

Exercice 4 - Désambiguïsation

Soit la grammaire suivante :
G4: S ::= T '$' T ::= '(' T ')'
T ::= TT T::= 'int'
T ::= ε
  • Cette grammaire est-elle ambiguë ?
  • Proposer une grammaire non ambiguë.

Exercice 5 - Expressions arithmétiques

Soit la grammaire suivante des expressions arithmétiques :
G5: S ::= E '$' E ::= E '+' E E ::= E '-' E
E ::= E '*' E E ::= E '/' E E ::= 'int'
E ::= '(' E ')'
  • Cette grammaire est-elle ambigüe ?
  • Proposer une grammaire non ambigüe.