Projet PADDLE 2005 Réunion de suivi 03/03/2005
Etat actuel X Y X2ATS ATS2Y XML Paddle LexerX ParserX Compilation statique (nouveau langage => recompilation de Paddle) Ajout d’un nouveau langage difficile (écriture du Lexer et du Parser) Comment éviter la recompilation ? Comment faciliter l’ajout de langages ?
Eviter la recompilation X Y X2ATS ATS2Y Paddle LexerX ParserX appels dynamiques Ajout de nouveaux langages sans recompilation Appel dynamique des classes externes Lexer et Parser Comment générer automatiquement Lexer et Parser ?
Ajout d’un nouveau langage LexerX.class ParserX.class X.gramX.sem Grammaire Informations sémantiques X.jar RHOKO X.g Javac + ANTLR Rhoko = générateur de fichiers.g X.gram : grammaire du langage X X.sem : informations sémantiques sur le langage X Passage de X.g à X.jar : ANTLR et javac (pour compiler : script bash ?) Portabilité ? Quelles informations sémantiques ?
RHOKO : détails X.gram X.sem X.g Méta compilateur Infos sémantiques Partie Lexer Partie Parser BDD GParserGLexer règles Meta-compilateur : grammaire des grammaires : vérification de la syntaxe, séparation des règles Infos sémantiques du langage X BDD : Tokens standards GLexer & GParser : générateurs pour créer le.g Quelles informations sémantiques ?
Sémantique : besoins Aide à la décision ? X2ATS Flux de sortie ATS X ParserX Abstract Syntaxic Tree (AST) Nœud AST Concept ATS... ... X.sem Associations entre les nœuds de l’AST et les concepts ATS, utilisées pour générer le flux de sortie ATS Travail laborieux pour l’utilisateur ! Génération de code
GESEM : générateur de.sem Objectif : Associer les concepts ATS aux nœuds de l’AST Idée : Ordonner les nœuds suivant une « probabilité » d’association avec un concept donné Comment : Recherche de motifs probables dans les noms de nœuds : par exemple, il est fort probable qu’un nœud contenant le motif VAR correspondent au concept DATAPART X.sem X.gram BDD Nœuds AST USER... DATAPART... VAR DATA ATTRIBUTES... Concepts ATS Motifs possibles ORD
Récapitulatif USERADMIN X.jar BDD GESEM X.sem X.gram X2ATS ATS2Y X Y XML Tokens standards Concepts ATS et motifs associés RHOKO GLexer GParser X.g
Et en sortie de Paddle ? génération de code
Et maintenant ? Au boulot !!!