#+TITLE: Analyse syntaxique #+LANGUAGE: fr #+ATTR_HTML: :alt en anglais :class lang-lifted [[file:../en/parsing-upec.org][file:../content/imgs/en.png]] #+ATTR_HTML: :alt return home :class home [[file:home.org][file:../content/imgs/home.png]] J'ai assuré la partie d'un cours sur la théorie des langages formels portant sur la [[https://fr.wikipedia.org/wiki/Hi%25C3%25A9rarchie_de_Chomsky][hiérarchie de Chomsky]] et sur l'[[https://fr.wikipedia.org/wiki/Analyse_syntaxique][analyse syntaxique]]. #+ATTR_HTML: :alt image de la licence Creative Commons Attribution Alone :class ccby [[https://fr.wikipedia.org/wiki/Licence_Creative_Commons][file:../content/imgs/ccby.png]] Mes supports de cours sont distribués sous la [[https://fr.wikipedia.org/wiki/Licence_Creative_Commons][licence Creative Commons Paternité]]. * Diapositives Les diapositives sont disponibles [[file:../content/courses/parsing-upec/parsing.pdf][ici]]. * Travaux Pratiques L'énonce du TP est disponible [[file:../content/courses/parsing-upec/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 : #+BEGIN_SRC String var1 = "hello world 1 + 2"; int var2 = 1 - (2 + 3); int var3 = 4 + var2; #+END_SRC Le code source ainsi que quelques exemples sont inclus dans [[file:../content/courses/parsing-upec/parsing.zip][cette archive]]. Pour tout compiler, il faut effectuer la séquence d'actions suivante : #+BEGIN_SRC jflex arith.flex jacc arith.jacc javac ArithEval.java #+END_SRC La commande suivante lance uniquement le scanner sur le premier exemple : #+BEGIN_SRC java Yylex examples/example1.duck #+END_SRC La commande suivante lance l'interpréteur sur le premier exemple : #+BEGIN_SRC java ArithEval examples/example1.duck #+END_SRC * 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. [[file:../content/courses/parsing-upec/parsing-workflow.pdf][Voici]] une présentation courte de la façon dont JFlex et Jacc sont utilisés. Ce 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 de l'analyse syntaxique. * Local Variables :noexport: # Local Variables: # org-link-file-path-type: relative # eval: (auto-fill-mode) # ispell-local-dictionary: "fr" # End: