Table des matières

Cours de théorie des langages : analyse syntaxique

Dans la partie de cours que j'assure nous introduisons la hiérarchie de Chomsky et nous attaquons ensuite l'analyse syntaxique automatique. Les matériaux de ce cours sont distribués sous la licence Creative Commons Paternité .

Diapositives

Les diapositives sont disponibles ici.

Travaux Pratiques

L'énonce des TP est disponible ici.

Exemples de code

Dans ce cours nous développons un interpréteur pour un langage simple d'affectations de variables de types nombre entier ou chaîne de caractère. Un programme dans ce langage a la forme suivante :

String var1 = "hello world 1 + 2";
int var2 = 1 - (2 + 3);
int var3 = 4 + var2;

Le code source ainsi que quelques exemples sont inclus dans cette archive.

Pour tout compiler il faut effectuer la séquence d'actions suivante :

jflex arith.flex
jacc arith.jacc
javac ArithEval.java

La commande suivante lance uniquement le scanner sur le premier exemple :

java Yylex examples/example1.duck

La commande suivante lance l'interpréteur sur le premier exemple :

java ArithEval examples/example1.duck

Outils

Nous utilisons le générateur de scanners JFlex et le générateur d'analyseurs Jacc. Les deux outils génèrent du code Java. Voici une présentation courte de la façon dont JFlex et Jacc sont utilisés.

Le choix d'outils a été proposé par Frédéric Gava (section Parsing de fichiers en Java). Cette page contient également d'autres diapositives au sujet d'analyse syntaxique.