Analyse syntaxique
J’ai assuré la partie d’un cours sur la théorie des langages formels portant sur la hiérarchie de Chomsky et sur l’analyse syntaxique.
Mes supports de cours sont distribués sous la licence Creative Commons Paternité.
Diapositives
Les diapositives sont disponibles ici.
Travaux Pratiques
L’énonce du 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.
Ce 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 de l’analyse syntaxique.