~~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.