~~TRANS~~
===== Cours de théorie des langages : analyse syntaxique =====
Dans la partie de cours que j'assure nous introduisons la [[wpfr>hiérarchie de Chomsky]] et nous attaquons ensuite l'[[wpfr>analyse syntaxique]] automatique. Les matériaux de ce cours sont distribués sous la [[https://fr.wikipedia.org/wiki/Licence_Creative_Commons|licence Creative Commons Paternité]] {{:ccby.png?60}}.
==== Diapositives ====
Les diapositives sont disponibles {{:parsing.pdf|ici}}.
==== Travaux Pratiques ====
L'énonce des TP est disponible {{:parsing-tp.pdf|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 {{:parsing.zip|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 [[http://jflex.de/download.html|JFlex]] et le générateur d'analyseurs [[http://web.cecs.pdx.edu/~mpj/jacc/|Jacc]]. Les deux outils génèrent du code Java. {{:parsing-workflow.pdf|Voici}} une présentation courte de la façon dont JFlex et Jacc sont utilisés.
Le choix d'outils a été proposé par [[http://lacl.univ-paris12.fr/gava/actuel.htm|Frédéric Gava]] (section Parsing de fichiers en Java). Cette page contient également d'autres diapositives au sujet d'analyse syntaxique.