Le compilateur NAZE. Table des matières. 1 Présentation du sujet. Alexandre LHUILLIER FIPA 2 21 juin 2011. 1 Présentation du sujet 1 1.1 But...



Documents pareils
Didacticiel de mise à jour Web

Petit guide à l'usage des profs pour la rédaction de pages pour le site Drupal du département

Cours Langage C/C++ Programmation modulaire

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Chapitre 3 : outil «Documents»

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV "CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB"

UTILISATION DE L'APPLICATION «PARTAGE DE FICHIERS EN LIGNE»

Télécom Nancy Année

Le générateur d'activités

Programmation Web TP1 - HTML

Initiation à html et à la création d'un site web

Import de comptes (xls)

Traitement de texte : Quelques rappels de quelques notions de base

Raja Bases de données distribuées A Lire - Tutoriel

TP1. Outils Java Eléments de correction

v7.1 SP2 Guide des Nouveautés

MEDIAplus elearning. version 6.6

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

1. Installation du Module

Mode d'emploi détaillé

Auguria_PCM Product & Combination Manager

Manuel Utilisateur. Boticely

Quelques éléments de compilation en C et makefiles

ésylog, direction technique Esylog_PeerBackup outil de sauvegarde individuelle mails & fichiers personnels documentation technique

Introduction à Expression Web 2

Utiliser Access ou Excel pour gérer vos données

Installation du SLIS 4.1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

La correction des erreurs d'enregistrement et de traitement comptables

Comment développer et intégrer un module à PhpMyLab?

Septembre 2012 Document rédigé avec epsilonwriter

Guide d'installation. Release Management pour Visual Studio 2013

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Courriel Archiver Version 2: Sommaire. Archiver : Sommaire. Comment ça marche Support Technique Préférences. Recherche

Manuel d utilisation NETexcom

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Télécharger et Installer OpenOffice.org sous Windows

«Vous éditez, nous archivons!»

Tutoriel - flux de facturation

Publier un Carnet Blanc

Publipostage avec Calc

Guide d'utilisation de WebEx Meeting Center avec les Salles de réunion de collaboration (Collaboration Meeting Rooms / Nuage CMR)

Retrospect 7.7 Addendum au Guide d'utilisation

Exposer ses photos sur Internet

MEGA Web Front-End Installation Guide MEGA HOPEX V1R1 FR. Révisé le : 5 novembre 2013 Créé le : 31 octobre Auteur : Noé LAVALLEE

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

Manuel du composant CKForms Version 1.3.2

Comment récupérer un document OOo corrompu. Distribué par Le projet OpenOffice.org

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Qu'est-ce qu'un moteur de recherche. Moteur de recherche sur Internet

LibreOffice Calc : introduction aux tableaux croisés dynamiques

Administration du site (Back Office)

8 Mars Guide du Wiki Confluence

Cyberclasse L'interface web pas à pas

claroline classroom online

Les messages d erreur d'applidis Client

Sage CRM. 7.2 Guide de Portail Client

Compte-rendu de projet de Système de gestion de base de données

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Comment formater votre ebook avec Open Office

ECLIPSE ET PDT (Php development tools)

À propos du Guide de l'utilisateur final de VMware Workspace Portal

Chapitre 2 Créer son site et ses pages avec Google Site

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Table des matières. 1 À propos de ce manuel Icônes utilisées dans ce manuel Public visé Commentaires...

7.0 Guide de la solution Portable sans fil

Nuxeo Enterprise Platform: Guide utilisateur

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Exemples et tutoriels Version 7.5. Tutoriel de l'exemple Recrutement de personnel pour IBM Process Designer

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Serveur Acronis Backup & Recovery 10 pour Linux. Update 5. Guide d'installation

GESTION DES BONS DE COMMANDE

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

Navigation dans Windows

Tableau de bord. Tableau de bord. Statistiques des contenus de votre site (nb de pages, articles, commentaires...)

REALISER UN SITE INTERNET AVEC IZISPOT SOMMAIRE

Publier dans la Base Documentaire

Personnalisation Fiche Annuaire

Didacticiel du service cartographique en cache

I. Introduction aux fonctions : les fonctions standards

Edutab. gestion centralisée de tablettes Android

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

Vtiger CRM - Prestashop Connector

Bernard HAMM, Évelyne LAVOISIER

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Manuel Utilisateur de l'installation du connecteur Pronote à l'ent

Créer et gérer des catégories sur votre site Magento

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Guide de démarrage rapide

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

Vérification intégrée de l'utilisateur Guide d'implémentation client Confidentiel Version 2.9

Transcription:

Le compilateur NAZE Alexandre LHUILLIER FIPA 2 21 juin 2011 Table des matières 1 Présentation du sujet 1 11 But 2 2 Manuel d'utilisation 2 21 Fichier d'entrée 2 22 Champs obligatoires 3 23 Champs communs 3 24 Champs spéciques aux disques 4 25 Champs spéciques aux livres 4 26 Commentaires 5 27 Messages d'erreurs et solutions correspondantes 5 28 Fichier de sortie 7 3 Conclusion 9 31 Fonctionnalités présentes 9 32 Améliorations possibles 10 A Exemple complet de chier d'entrée 11 B Instructions de compilation 13 1 Présentation du sujet L'application est un compilateur qui, à partir d'un chier texte - dont le format sera décrit dans le manuel d'utilisation -, produit plusieurs chiers HTML représentant une médiathèque composée de descriptions de livres et de disques 1

11 But Le but du projet derrière cette application est de se familiariser avec les applications pratiques de la théorie des langages, en créant une grammaire, un lexique et à partir de là, un compilateur 2 Manuel d'utilisation Le compilateur NAZE s'exécute avec une commande de ce format : /naze <chier d'entrée> <répertoire de sortie> Si le répertoire de sortie n'existe pas ou si l'utilisateur n'a pas les droits en écriture dessus, le programme abandonne Le format du chier d'entrée est décrit dans la suite 21 Fichier d'entrée Le chier d'entrée est un chier texte composés de plusieurs blocs délimités par des parenthèses Ils ont pour titre "LIVRE" ou "DISQUE" selon le type de média qui y est décrit Ce titre est seul sur une ligne Un bloc est ensuite composé de plusieurs champs, de la forme \<nom_balise> = <valeur_champ> Il peut y avoir n'importe quel nombre de blancs quelconques entre le nom de la balise, le "=" et la valeur DISQUE LIVRE Extrait d'un chier d'entrée composé de deux blocs 2

22 Champs obligatoires Dans chaque bloc, un champ \Titre et un champ \Auteurs sont obligatoires et ne doivent être présents qu'une fois chacun Leur ordre et leur emplacement dans le bloc n'a pas d'importance DISQUE \Auteurs=White Jack ; White Meg \Titre=Icky Thump LIVRE \Titre = Trois vies chinoises \Auteurs =Dai Sijie Le même chier avec les balises \Titre et \Auteurs, placées à des emplacements quelconques La valeur d'un champ \Titre est un texte libre La valeur du champ \Auteurs est : Pour un auteur, de la forme <1 nom de famille> <0 ou 1 ou plusieurs prénoms> Les prénoms peuvent être séparés par un blanc quelconque espaces, tabulations ou sauts de ligne Pour plusieurs auteurs : de la forme<auteur> ;<auteur> ; ;<auteur> 23 Champs communs Il existe plusieurs champs communs aux disques et aux livres Voici les type de données qu'ils peuvent accepter : ENTIER : un nombre entier URL : une chaîne de caractères qui représente une URL Si elle contient des blancs, ils seront supprimés lors de la compilation TEXTE LIBRE : Une chaîne de caractères libre, la plupart des caractères sont acceptés Il est tout de même préférable d'éviter les accents Pour écrire une parenthèse sans provoquer d'erreur de syntaxe, elle doit être préxée d'un " \" notez l'espace avant le backslash Un backslash 3

seul était prévu au départ, mais pas moyen de faire accepter un chier sans l'espace actuellement Voici les balises communes, en plus des 2 balises obligatoires, et les types de données qu'elles acceptent : \Annee : ENTIER \Photo : URL \Notes : TEXTE LIBRE 24 Champs spéciques aux disques Deux types de données supplémentaires existent pour les disques : DUREE : <entier> :<entier> INTERPRETES : Pour un interprète seul : <nom> <prenoms>qualité Pour plusieurs interprètes, ils sont séparés par des points-virgules La qualité est un TEXTE LIBRE Voici les champs et leur type de donnée correspondant : \Interpretes : ENTIER \Plage : TEXTE LIBRE \Duree : DUREE Une Plage peut être suivie ou non d'une durée Un champ Durée ne peut pas être présent sans champ Plage le précédant Plusieurs champs Plage chacun éventuellement suivi d'une durée peuvent être présent dans un bloc DISQUE Exemple de bloc DISQUE : DISQUE \Auteurs=White Jack ; White Meg \Titre=Icky Thump \Interpretes=White Jackguitare et chant ; White Megbatterie \Plage = Catch Hell Blues \Duree = 3 :00 \Plage = Little Cream Soda 25 Champs spéciques aux livres Voici les champs et leur type de donnée correspondant : \Resume : TEXTE LIBRE 4

\Editeur : TEXTE LIBRE Exemple de bloc LIVRE : LIVRE \Editeur= Flammarion \Titre = Par une nuit ou la lune ne s'est pas levee \Resume = Une histoire de langues inconnues, de chasse au tresor, de trucs sympas \Auteurs =Dai Sijie 26 Commentaires Vous pouvez inclure des commentaires dans le chier d'entrée Pour cela, vous avez deux méthodes : Pour entrer un commentaire qui s'étend jusqu'à la n d'une ligne, commencez votre commentaire par "%%" Exemple : %%Tout sera commenté jusqu'au prochain retour à la ligne Pour entrer un commentaire qui peut s'étendre sur plusieurs lignes, encadrez-le avec "*" au début et "*" à la n Exemple : * Dans cette ville, La compil', c'est subtil, pas facile * 27 Messages d'erreurs et solutions correspondantes Le programme abandonne la compilation dès la première erreur rencontrée Chaque erreur est précédée d'un message : erreur ligne <numero de ligne> : <dernier mot détecté> Voici les messages qui peuvent suivre : Le champ obligatoire \Auteurs est deja present plus haut dans ce media Un seul champ "\Auteurs" doit être présent dans un bloc Ce message signi- e que vous en avez plusieurs dans un bloc 5

Le champ obligatoire \Titre est deja present plus haut dans ce media Un seul champ "\Titre" doit être présent dans un bloc Ce message signie que vous en avez plusieurs dans un bloc Le champ obligatoire \Auteurs est absent de ce media Le champ \Auteurs est obligatoire dans un bloc Ce message signie que le bloc à la ligne signalée n'en possède pas Le champ obligatoire \Titre est absent de ce media Le champ \Titre est obligatoire dans un bloc Ce message signie que le bloc à la ligne signalée n'en possède pas Un champ \Resume ne doit pas etre present dans un bloc DISQUE Un champ \Editeur ne doit pas etre present dans un bloc DISQUE Un champ \Plage ne doit pas etre present dans un bloc LIVRE Un champ \Duree ne doit pas etre present dans un bloc LIVRE Un champ \Interpretes ne doit pas etre present dans un bloc LIVRE Ce type de message apparaît lorsqu'un champ spécique à un type de bloc apparaît dans un bloc de l'autre type Un champ \Duree doit etre precede d'un champ \Plage Un champ \Duree est présent sans \Plage le précédant à la ligne indiquée champ precedent mal forme format du champ <nom du champ> : <nom du champ> = <type du champ> Ce message signie qu'un champ mal formé a été trouvé Selon le cas, <nom du champ> est remplacé par le nom de la balise \Titre, et <type du champ> par le type qui lui est associé <Texte libre>, <nombre entier> 6

28 Fichier de sortie Le premier chier généré est le chier indexhtml, contenant un sommaire de toutes les oeuvres : Les oeuvres sont triées par ordre alphabétique de leur nom, sans prise en compte du type de média Les auteurs apparaîssent avec les initiales de leurs prénoms et leur nom de famille complet Ils sont triés par ordre alphabétique de leurs noms et prénoms La troisième colonne contient, s'ils sont renseignés, soit l'éditeur si le média est un livre, soit la durée totale d'écoute, calculée avec la somme des durées des plages, si c'est un disque A chaque oeuvre correspond une page détaillée comportant plus d'informations sur l'oeuvre Si le champ \Photo est rempli dans le chier d'entrée, l'image qui est à l'url renseignée est achée sur la page Notez que le programme ne vérie pas si le chier référencé par l'url est bien une image 7

Un exemple de page détaillée sur un livre : 8

Un exemple de page détaillée sur un disque : 3 Conclusion 31 Fonctionnalités présentes L'application est actuellement capable de produire plusieurs chiers html à partir d'un chier d'entrée : un chier index, avec la liste des médias, et un chier avec une description détaillée de chaque oeuvre L'utilisateur peut insérer des commentaires dans son chier d'entrée pour apporter des précisions qui ne doivent pas être visibles en sortie Les messages d'erreur qui apparaîssent à la compilation permettent de facilement localiser le problème dans le chier d'entrée Lorsque le message d'erreur ne propose pas de solution, il communique au minimum la ligne de l'erreur rencontrée et le dernier mot détecté 9

32 Améliorations possibles Actuellement, le code HTML est présent en dur dans le programme On pourrait imaginer ajouter, en option du programme, un chier HTML qui servirait de template pour pouvoir personnaliser la mise en page de la médiathèque On pourrait également mettre plusieurs chiers d'entrée pour générer en sortie une seule collection de chiers contenant les description des médias de tous les chiers d'entrée Une autre amélioration possible serait un projet en elle-même : il s'agirait de rendre le format du chier d'entrée extensible Concrètement, on aurait d'un côté un chier listant tous les types de médias possibles, toutes les balises possibles avec leur type et des informations complémentaires : \Titre TEXTELIBRE OBLIGATOIRE ALL \Annee ENTIER FACULTATIF ALL \Plage TEXTELIBRE DISQUE On aurait, de l'autre, un chier template qui dirait où chaque champ est placé dans le HTML Un programme générerait à partir de ceux-ci les chiers lex et yacc correspondants, et des chiers c pour la gestion de champs plus complexes comme les auteurs ou les plages, qui peuvent être présents plusieurs fois et pour l'écriture du HTML Les chiers générés seraient directement compilables pour obtenir un nouveau compilateur 10

A Exemple complet de chier d'entrée vraiexempletxt : DISQUE%%commentaire a la fin du libelle \Auteurs = White Jack ;White Meg \Interpretes = White JackGuitare chant ;White MegBatterie %%commentaire inutile \Titre=Icky Thump \Plage=Icky Thump \Duree = 4 :14 \Plage=300 MPH Torrential Outpour Blues \Duree=05 :28 \Plage=Catch Hell Blues \Duree=04 :18 \Plage=Prickly Thorn, but Sweetly Worn \Duree=3 :05 \Plage=St Andrew \This Battle Is In The Air \%%Bordel, un vrai titre avec des parentheses dedans! \Duree=01 :49 \Plage=I'm Slowly Turning Into You \Duree=04 :34 \Plage=Effect And Cause \Duree=03 :00 \Plage = Rag And Bone \Duree = 3 :48 \Plage =Conquest \Duree = 2 :48 \Plage = Little Cream Soda \Duree=0003 :045 \Notes=mes notes \Photo = http ://wwwurbcom/uploads/reviews/cd_reviews/the_white_stripes_icky_thump_third_man Warner_Brosjpg \Annee = 2007 * un commentaire sur plusieurs lignes * LIVRE 11

\Editeur=Hachette \Photo=http ://wwwdecitrefr/gi/64/9782070358564fsgif %%espaces, tabulations et sauts de ligne supprimes durant la lecture d'une url \Auteurs=Dai Sijie %%Jolie balise \Auteurs \Editeur =Gallimard%%Cet editeur ecrase le premier \Resume=Un livre tres interessant \Titre = Par une nuit ou la lune ne s'est pas levee*la comme j'ecris un 2eme resume le 1er sera ecrase* \Resume=Une histoire *commentaire en plein milieu du resume 2*2* de chasse au tresor, avec des chinois, des francais %%le 3eme media DISQUE \Interpretes=BBC \Auteurs=Gold Murray \Titre= Doctor Who OST Series 1 & 2 \Annee =2007 \Plage= Doomsday \Duree=3 :2 \Plage = Seeking the Doctor \Plage = I'm Coming To Get You \Plage = Rose's Theme \Plage=Father's Day \Plage = Madame de Pompadour \Photo=http ://2bpblogspotcom/_LfbRKURMNyM/TSUNf6yBI1I/AAAAAAAAAug/h5zjimZj8ss/s1600/ Doctor+Who+Series+1-2+front+coverjpg LIVRE \Titre = Le Complexe de Di \Auteurs = Dai Sijie \Resume = Un juge chelou qui accepte de droles de corruptions, un chinois qui a vécu en France qui veut libérer une détenue, et une scène qui lui a fait mériter son prix Femina 12

B Instructions de compilation Commandes à eectuer dans le dossier PICO_LHUILLIER Recompiler l'exécutable : make default Supprimer les chiers intermédiaires : make clean Supprimer l'exécutable : make delete 13