Ctigre, compilation vers le langage intermédiaire.
Grammaire du langage
La grammaire de Ctigre est donnée sous une forme moins ambigue ici.
Les conflits restants de la forme shift/reduce sont résolus
par des priorités aux opérateurs arithmétiques (dans l'ordre, chaque
ligne à une priorité décroissante) ainsi que pour le test,
l'affectation et la construction de tableau.
Un squelette
Un squelette qui inclus un lexeur,
une AST,
un parseur,
un imprimeur,
et un interpréteur
pour le langage sans structures de données peut-être retiré dans
~remy/majeur/td5/
Pour compiler et tester:
make
./eval < test.ml
À faire
-
Éventuellement, compléter le programme avec les valeurs construites.
-
Modifier l'interpréteur pour faire apparaître la structure
de bloc.
-
Définir le code intermédiaire.
-
Compiler dans le code intermédiaire.
-
Écrire un interprète pour le code intermédiare.
Remarque
Dans AST,
il y a utilisation du type de base option:
type 'a option = None | Some of 'a
The type of optional values.