work-site/fr/parsing-upec.org
2018-09-30 21:40:27 +02:00

2.7 KiB

Analyse syntaxique

/scolobb/work-site/media/commit/b2dee6b7f7d76a8a5da7f7753a954968e457ef3c/content/imgs/en.png /scolobb/work-site/media/commit/b2dee6b7f7d76a8a5da7f7753a954968e457ef3c/content/imgs/home.png

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.

/scolobb/work-site/media/commit/b2dee6b7f7d76a8a5da7f7753a954968e457ef3c/content/imgs/ccby.png

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.