BibTeX++ Suppression de la pile dans les langages à pile

Slides:



Advertisements
Présentations similaires
[Nom du présentateur] [Titre/position/statut du présentateur] Webinaire pour [nom du groupe] [Nom de l'institution] [Date]
Advertisements

ZOTERO logiciel de gestion bibliographique
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Les fonctions A quoi ça sert ?
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Formation universitaire à .NET: Introduction à C#
LE LANGAGE JAVASCRIPT LES FENETRES.
Transformation de documents XML
GEF 243B Programmation informatique appliquée
Cours n° 8 Conception et Programmation à Objets
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
(Classes prédéfinies – API Java)
Algorithme et structure de données
26/05/071 Présentation de JUnit Partie 2 NICOLAS BOUSSEKEYT CNAM
Principes de programmation (suite)
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Tests Programmation par contrats
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
Bibliothèque standard du C++
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
IFT313 Introduction aux langages formels
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Standard Template Library (STL)
Introduction à la programmation (Java)
Doctorat/Web of Science Les nouveautés du Web of Science Formations Master et Doctorants Voir aussi
Structures de données IFT-2000
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 7 : Classes et fonctions paramétrables Département.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à l’algorithmique
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
C++ : fonctions et opérateurs
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-10541
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Animateur : Med HAIJOUBI
Le langage C Structures de données
TP n°3 Javascript Contrôle de formulaire
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Marc Bouissou, Guillaume Torrente, EDF
Paradigmes des Langages de Programmation
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
SIF-1053 Architecture des ordinateurs
XPath XML Path UP Web Année universitaire
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Créer des packages.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
Tutorat en bio-informatique
Master 1 ère année Sécurité des Systèmes Informatique 1 Gestion de modules  Un module est un morceau de code qui peut être chargé à la volée dans le noyau.
ETNA – 1ème année Guillaume Belmas –
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Gérez vos références bibliographiques avec France.Martin [à]univ-paris1.fr
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
BlueJ_VII 1 Java, les objets : tout de suite ! Conception de classes (1) Notes de cours associées au chapitre 7 tutorial BlueJ
Visual Information Solutions IDL 7.0 Pour une utilisation optimale d’IDL.
PROJET DE SESSION PRÉSENTÉ PAR : Rosemarie McHugh DANS LE CADRE DU COURS : SCG Réalisation d’applications en SIG 16 avril 2007.
Pour mieux vieillir ensemble EndNote 301 Aide à la rédaction (Cite-While-you-write) Par Marie-Marthe Gagnon Bibliothécaire Mars 2015.
Transcription de la présentation:

BibTeX++ Suppression de la pile dans les langages à pile Emmanuel DONIN DE ROSIÈRE Encadrant : Ronan KERYELL http://bibtex.enstb.org

Plan Les bibliographies sous LaTeX Présentation de BibTeX++ Objectifs du stage BiSTrO BibTeX++ Résultats Conclusion / Perspectives

Bibliographie Indispensable dans les documents scientifiques car : Permet d'identifier clairement le document Donne de la crédibilité au document Sous LaTeX, un seul logiciel est utilisé : BibTeX

BibTeX (1) Facile à utiliser : Choisir un style de bibliographie (il en existe énormement => 150 dans MikTeX ) Créer la base de références bibliograpiques @BOOK{latex:GooMittSam, Author = {Michel Goossens and Frank Mittelbach and Alexander Samarin}, Publisher = {Addison-Weslay}, Title = {The \LaTeX{} Companion}, Year = {1994} } Rajouter quelques lignes dans le document LaTeX \bibliographystyle{monstyle} \bibliography{mabase}

BibTeX (2) Néanmoins : Pas d'évolution depuis 1990 Le langage de style n'est pas aisé à apprendre (et comprendre) : FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } Pas de gestion des types d'encodage moderne (unicode ...) → Pas de bibliographie en japonais, arabe ...

BibTeX++ Cherche à corriger ces défauts : BibTeX++ est portable (écrit en JAVA) Accepte l'UNICODE (natif en JAVA) Modifiable facilement grâce à un système de plugins Compatible avec BibTeX Les styles sont écrits en JAVA pour qu'ils soient plus simples à écrire et pour avoir plus de fonctionnalités : Internet Locale (gestion des langues) ...

Objectifs du stage Transformer les anciens styles (en bst) en JAVA : Pour garantir la compatibilité avec BibTeX Pour améliorer la lisibilité des styles (pour les programmeurs) Reprendre les différents travaux et ajouter quelques fonctionnalités : Sécurité Procédure d'installation ...

BiSTrO BibTeX Style Translator and Optimizer Transforme les anciens styles BibTeX (en bst) en style BibTeX++ (en JAVA) Permet d'optimiser le code JAVA en sortie => Plus facile de modifier un style Convertit donc un code écrit dans un langage à pile (bst) en code classique (JAVA) => Il faut donc supprimer la pile

Fonctionnement Architecture : AST : Abstract Syntax Tree (arbre syntaxique) Chaque noeud représente un opérateur, les feuilles sont les opérandes

Tree Translator (1) Transforme l'AST bst en AST JAVA 5 étapes : Chercher des informations sur les fonctions (nom, possibilité de retirer la pile, nombre d'arguments, nombre de paramètres de sortie) Retrouver le type des arguments de la fonction (string, entier ou Cell) Trouver le nombre de variables à utiliser et leur type Transformer les fonctions où l'on peut supprimer la pile Transformer les autres fonctions

Tree Translator (2) Transforme la pile en variables Retrouve le typage des éléments : Grâce aux types des éléments retournés par les fonctions internes de BibTeX Grâce aux types des arguments des fonctions internes (pour les arguments)

Tree Translator (3) Néanmoins le code en sortie n'est pas clair : public String format_lastchecked( ) { String s0 , s1; int i0; s0 = lastchecked; i0 = BuiltIn.empty( s0 ); if( i0 > 0 ) { s0 = ""; } else { inbrackets( ); s0 = "cited "; s1 = lastchecked; s0 = s0 + s1; } return( s0 ); } FUNCTION {format.lastchecked} { lastchecked empty$ { "" } { inbrackets "cited " lastchecked * } if$ }

Optimisations Permettent d'obtenir un code plus clair Sont facultatives (option -O) Les plus importantes sont : La propagation de constantes et de copies L'élimination de code mort L'optimization des structures de contrôles (conditions et blocs vides) ...

BibTeX++ Interfaçage avec BiSTrO Gestion de la sécurité (SecurityManager de JAVA) Réécriture des Parsers/Lexers sous SableCC Procédures d'installation (rpm, exe, ant ...) Documentation ...

Résultats Fonctionnel : les bibliographies des rapports ont été faites avec BibTeX++ Code optimisé clair : En moyenne 3.2 sec pour créer un style BibTeX++ (4.4 sec si optimisé) et 0.8 sec pour créer la bibliographie (contre 0.04 sec pour BibTeX) Public void new_sentence( ) { if( output_state != after_block ) { if( output_state != before_all ) { output_state = after_sentence; } } }

Conclusion / Perspectives BibTeX++ : Fonctionnel Compatible avec BibTeX Plus de fonctionnalités Disponible sur picolibre et http://bibtex.enstb.org Néanmoins, reste à : Gérer les plugins Développer des styles BibTeX++ et plugins pour montrer toutes ses capacités