MIC : Implémentation

abstraction concrète

Quelques mots sur la réalisation en JavaScript

Lors de la réalisation de MIC, j'ai cherché à tirer profit de concepts de programmation puissants, en introduisant les techniques et le style fonctionnel de Caml, dans JavaScript :

  • Ainsi, l'ai-je muni de structures adaptées à l'implémentation des langages fonctionnels, avec les listes (cf. le module JavaScript "listes.js").
  • Partant des listes, il était simple et fort pratique de rajouter les flux (cf. le module JavaScript "stream.js").
  • Pour conserver un style de programmation proche de celui de la version Caml de l'interprète mini-Caml, j'ai introduit une structure de type construit, puis une structure conçue comme une combinaison de type produit et de type vecteur, et des fonctions pour contrôler la sortie en affichage sur l'écran (cf. le module JavaScript "outils.js").
  • Le module erreur.js a été conçu pour implémenter une gestion des erreurs assez sommaire.

    L'implémentation du langage

    Pour cette seconde partie, j'ai essayé de conserver le plus de ressemblance possible avec le modèle Caml donné dans le livre Le langage Caml de Pierre Weis et Xavier Leroy, InterEditions, 1993.
  • L'analyse lexicale (cf. le module JavaScript "analex.js") est réalisée par une fonction lex. Celle-ci, appliquée à une chaîne de caractères, produit une liste de lexèmes. La liste de lexèmes est ensuite transformée en un flux de lexèmes.
  • L'analyse syntaxique (cf. le module JavaScript "syntax.js") construit une représentation abstraite des expressions en mini-Caml à partir d'un flux de lexèmes.
  • La synthèse des types (cf. le module JavaScript "typage.js") détermine le type des expressions abstraites.
  • L'évaluation (cf. le module JavaScript "evalue.js") réduit les expressions abstraites à la valeur qu'elles décrivent.
  • L'interprète (cf. le module JavaScript "jaml.js") effectue l'analyse lexicale de la chaîne entrée par l'opérateur, puis l'analyse syntaxique du flux de lexèmes obtenu. Ensuite, il procède à la synthèse des types et l'évaluation des expressions abstraites produites par l'analyse. Enfin, le cas échéant, il met à jour l'environnement en créant les liaisons associant tout nouvel identificateur déclaré à son type et à sa valeur.

    Liste de modules en JavaScript

    1. outils.js
    2. listes.js
    3. stream.js
    4. erreur.js
    5. analex.js
    6. syntax.js
    7. typage.js
    8. evalue.js
    9. jaml.js
    Contacter l'auteur :
    <Jacques.Rouable@wanadoo.fr>

    dernière modification : 28/03/97