GOBO Ne pas partir de zéro Utiliser la partie avant d'un compilateur Eiffel pour l'analyse lexicale pour l'analyse syntaxique Adapter les traitements sémantiques pour produire des faits PROLOG Étendre GOBO pour implémenter l'héritage inverse.
Notes sur le SLIDE 1 NE PAS INTEGRER DANS LE BEAMER ANTLR : non Une tâche trop difficile a réaliser Double objectif : faits PROLOG / héritage inverse S'appuyer sur un compilateur déjà existant, du domaine public.
Parcourir un AST Représentation d'un programme Eiffel par un AST (Abstract Syntax Tree). Chaque noeud représente une structure syntaxique particulière. Pour générer les faits PROLOG, il est nécessaire de traiter spécifiquement les noeuds de l'AST. Design Pattern Visitor.
Gestion des clés primaires Garantir l'unicité d'une clé Retrouver la clé d'un fait Utilisation d'une fabrique de clés pour regrouper les opérations de génération. Design pattern Fabric Typage des clés
Fabrique de clés
Association des traitements sémantiques Regroupement des traitements dans une classe Visiteur Échange de données entre noeuds Attribut d'instance pour représenter une valeur courante Transmission des clés primaires Utilisation des identificateurs de noeud
Mise en oeuvre du partage des informations Délégation des opérations sur les noeuds à d'autres Visiteurs Permet de générer des catégories de faits similaires. Partage de la fabrique de clés, de faits ou d'un contexte Design pattern Singleton
Fonctionnement de l'ensemble
Extension de la grammaire Modification du fichier yacc Adapter la grammaire Problème des mots clés Création de nouveaux noeuds Adapter les noeuds préexistants Fort couplage avec les autres noeuds de l'arbre Modification de l'interface Visiteur
Extension de la grammaire
Difficultés de l'implémentation