rapport

Pages: 8 (1905 mots) Publié le: 18 août 2014
RAPPORT DE PROJET DE COMPILATION
Graphe d’appel d’un code Pseudo-Pascal

















Table des matières

1 Sujet et choix du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Introduction au sujet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Choix du langage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3 Front-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1 Définition des types . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . 3
3.2 Analyseur lexical . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 3
3.3 Analyseur syntaxique . . . . . . . . . . . . . . . . . . . . . . . …. . . . . . . . . . . . . . . . 3
4 Middle End
6 Difficultés rencontrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5










1 Sujet et choix du langage
1.1 Introduction au Sujet
Lorsque l'on travaille sur une applicationcontenant plusieurs fonctions, il devient difficile de bien cerner les appels entre celles-ci. Pour intervenir dans Les codes de ce genre d’application, un des éléments indispensable à leur compréhension est l'arbre d'appel.

L’objectif de ce Projet est d’écrire un programme qui prend en entrée un code Pseudo Pascal,et qui affiche son graphe d’appel sur la sortie Standard. Pour cela, il fautdans un premier temps,écrire un analyseur lexical et syntaxique (Front-end), en s’aidant de d’ocamllex/ocamlyacc. Cet analyseur devra reconnaître un programme Pseudo-Pascal et retourner l’arbre de syntaxe abstraite associé et l’afficher sur la sortie standard.
La deuxième partie (Middle-end) consiste à transformer l’arbre de syntaxe Obtenu précédemment en un graphe d’appel.
La troisièmeet dernière partie (Back-end), Porte sur la création du dessin du graphe d’appel. Pour ceci,il faudra générer un fichier dot qui pourra ensuite être converti en image.

1.2 Choix du langage :

Nous avons fait le choix d’utiliser le langage Caml pour ce projet car il nous semblait plus pratique d’utilisation dans ce cadre précis. Nous avons donc utilisé Lex et Yacc pour nous aider lors latransformation du code Pascal en un graphe d'appel. Les fichiers d'entrée de camllex et camlyacc ont les extensions .mll et .mly sur le fonctionnement de ces traits avancés.






2 Front-End
L'objectif du Front-end est simple à comprendre : À partir du code Pascal, nous devons générer l'arbre de syntaxe abstraite correspondant. pour ce faire, nous devons créer des types Ocaml, couvranttoute la grammaire du langage Pseudo-Pascal, pour que notre programme puisse le reconnaitre.

3.1 Définitions des types
Dans un fichier type.mli, nous avons défini les différents types Ocaml qui pourraient ensuite nous servir pour la construction de l’arbre de syntaxe abstraite.
Chaque type a une signification sémantique, nous avons ainsi défini :
- Un type type_expr nous permettant dedifférencier les types d’expressions (Int, booléan ou tableau ).
- Un type var_list qui définie le type d’un identifiant, ceci est composé d’un caractère alphabétique suivi d’un nombre quelconque de caractères alphanumériques.
- Un type program qui donne la structure d’un programme Pseudo-Pascal, il contient trois éléments :
-> La déclaration des variables.
-> La déclaration desfonctions et procédures.
-> les instructions.
- Un type expression qui permet d’avoir la syntaxe d’une expression ou condition.
- Un type binop qui représente Les opérateurs unaires et binaires, qui apparaissent dans la syntaxe des expressions.Ils s’appliquent a des expressions de type integer. Tous produisent un résultat de type Int, sauf les opérateurs binaires de comparaison, qui...
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • Rapport
  • Rapport
  • Rapport
  • Rapport
  • Rapport
  • Rapport
  • Rapport
  • Rapport

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !