-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
65 lines (49 loc) · 3.09 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Les remarques faites pour le rendu 2 ont été corrigées dans ce rendu.
Dans les références nous avons modifié quelques peu les choses pour mieux coller
avec OCaml
- a := 4 ne renvoie pas 4, mais ne renvoie rien, il faut dans ce cas faire a := 4 ; !a
Cela évite de faire ce qui est non recommandé par le sujet, à savoir 3 + (a := 4)
- S'utilise toujours de la manière suivante :
let a = ref ... in
a := !a + 1;
!a
Les exceptions sont aussi implémentées.
=============================================
Répartition des fichiers
=============================================
- main.ml : C'est le point d'entrée du programme. Il sert à traiter les différents cas selon les arguments passés au programme.
- lexer.mll / parser.mly : tout ce qui est lexer et parser.
- expr.ml : définition du type prog et une fonction d'affichage de programme.
- interpreteur.ml : fichier qui contient l'interpréteur des programmes fouine.
- compilateur.ml : contient tout ce qui est en rapport avec la machine à pile. (Pour l'instant la partie compilation et interprétation sont dans le même fichier, elles seront sûrement séparé s'il y a plus de code au prochain rendu.)
- dossier test : contient de nombreux tests détaillés à la fin du README.
=============================================
Interpréteur
=============================================
Partie de Julien Devevey
L'interpréterur fonctionne maintenant, nous avons corrigé les problèmes de clôture.
=============================================
Parser / Lexer
=============================================
Partie de Guillaume Cluzel
Le parser fonctionne très bien. Le lexer aussi.
=============================================
Machine à pile
=============================================
Compilation : Julien Devevey / Interprétation : Guillaume Cluzel
La machine à pile compile et interpréte, mais que les expressions arithmétiques avec le prInt.
L'option -machine [fichier.ml] prend un fichier fouine (uniquement des expressions arithmétiques) le compile et exécute la machine à pile.
L'option -interm [fichier.code] [fichier.ml] prend un fichier fouine en entrée ainsi que le fichier de destination .code dans lequel est stocké le code donné à la machine à pile.
=============================================
Exemples
=============================================
De nombreux exemples sont dans le dossier "test" pour tester le programme.
- fact.ml : implémentation de la factorielle
- fact2.ml : une autre implémentation de la factorielle
- eval_func.ml : évaluation de fonction
- anonymous_fun.ml : évaluation d'un fonction anonyme
- reference.ml : utilisation de références
- somme.ml : somme deux élements à l'aide de références, des fonctions récursives ainsi que des if then else.
- calcul.ml : une expression arithmétique avec un prInt pour tester la machine à pile.
- trywith.ml / excep.ml : test pour les exceptions.
- retour_rendu.ml : code qui marchait pas dans le rendu 2 et qui fonctionne maintenant.