IFT313 – Introduction aux langages formels Eric Beaudry Département dinformatique Université de Sherbrooke Laboratoire 4 – JFlex Été 2010.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Formation universitaire à .NET: Introduction à C#
Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
DTD Sylvain Salvati
Groupe IHM Isabelle BONDOUX Cédric CASTAGNE Samy FOUILLEUX
Programmation Web Les JSP.
Analyse syntaxique (intro)
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Programmer en JAVA par Tama
Chap 1 Grammaires et dérivations.
Introduction : Compilation et Traduction
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Outils de tests, logs et documentation Frédéric Moalannée 2010/2011 POO.
IFT313 Introduction aux langages formels
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Introduction : Compilation et Traduction
Analyse lexicale Généralités Expressions rationnelles Automates finis
Analyse et Conception orientée objet
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
IFT313 Introduction aux langages formels
Structures de données IFT-2000
Le langage Javascript pour le web
Le langage Javascript pour le web et application au DHTML
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Révision de mi-session.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
IFT313 Révision finale Département d’informatique
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Automates à pile LR Notion de poignée.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Traduction dirigée par la syntaxe
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é.
Chapitre 3 Syntaxe et sémantique.
Expressions et affectations
Analyse lexicale et syntaxique
IFT313 – Introduction aux langages formels Éric Beaudry Exercices Expressions régulières, ADF et AFN Été 2010.
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Rappel Modèle analyse-synthèse de la compilation
Paradigmes des Langages de Programmation
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
Le GRAFCET.
Programmation Web : Introduction à XML
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
IFT313 Introduction aux langage formels
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Présentation du développement du projet.  Introduction  Conception et méthodes  Developpement  Conclusion 2.
Modélisation des documents: DTD et Schéma
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Introduction à la compilation
Chap 1 Grammaires et dérivations.
IFT313 Solutions TP6 – Été 2010 Département d’informatique
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
FLASH Séance 2 Xiaoliang Liang Morgane Le Nan SI28 P05.
Le langage XML Documents bien formés Un document XML est dit bien formé lorsque le document est correct sans toutefois posséder une DTD. Le prologue du.
FACTORY systemes Module 5 Section 1 Page 5-3 Les scripts de traitement FORMATION INTOUCH 7.0.
IFT313 Introduction aux langages formels
Transcription de la présentation:

IFT313 – Introduction aux langages formels Eric Beaudry Département dinformatique Université de Sherbrooke Laboratoire 4 – JFlex Été 2010

Tâches Implémenter des commentaires style C dans un analyseur lexical. Reconnaître des commentaires imbriqués. Valider des lexèmes de documentation du style JavaDoc ou Doxygen.

Langage dexpressions arithmétiques 1.Repartez de lexemple (calc/scanner.jflex) : ";" { return symbol(Sym.SEMI); } "+" { return symbol(Sym.PLUS); } "-" { return symbol(Sym.MINUS);} "*" { return symbol(Sym.TIMES); } "/" { return symbol(Sym.DIVIDE); } "%" { return symbol(Sym.MOD);} "(" { return symbol(Sym.LPAREN); } ")" { return symbol(Sym.RPAREN); } [0-9]+ { return new Symbol(Sym.NUMBER, yychar, yychar+yytext().length(), new Integer(yytext())); } [ \t\r\n\f] { /* ignore white space. */ }. { System.err.println("Illegal character: "+yytext()); }

Implémenter des commentaires Texte en entrée: 2+3; /* ceci est un commentaire … */ 3+4; Tokens en sortie: NUM : 2 PLUS : + NUM : 3 SEMI : ; COMMENTAIRE : ceci est un commentaire … NUM : 3 PLUS : + NUM : 4 SEMI : ;

Commentaires imbriqués Texte en entrée: 2+3; /* ceci est un commentaire /* imbriqué */ */ 3+4; Tokens en sortie: NUM : 2 PLUS : + NUM : 3 SEMI : ; COMMENTAIRE : ceci est un commentaire /* imbriqué */ TIMES : * DIV : / NUM : 3 PLUS : + NUM : 4 SEMI : ;

Comment supporter des commentaires imbriqués Les expressions régulières ne permettent pas de décrire des commentaires imbriqués. Le langage L={ («/*» w «*/» ) n, w=A* } nest pas régulier. Il serait possible de supporter ce langage par une grammaire. Cependant, cela exigerait que les commentaires soient reconnus au moment de lanalyse syntaxique plutôt quà lanalyse lexicale, ce qui moins pratique. JFlex peut utiliser plusieurs modes où chacun des modes possède son propre AFD. On peut passer dun mode à un autre à laide de la méthode yybegin() de JFlex. Chaque expression régulière peut être associée à un ou plusieurs modes. Un mode est donné entre <>.

Astuce pour reconnaître commentaires imbriqués 1.Ajouter devant les définitions dexpressions régulières du langage dexpressions arithmétiques. 2.Lorsque le début dun commentaire /* est reconnu, il faut basculer dans le mode. "/*" { yybegin(COMMENT); comment_count = comment_count + 1; } 3.À chaque fois que /* est rencontrer, incrémenter un compteur de profondeur. "/*" { comment_count = comment_count + 1; } 4.À chaque fois que */ est rencontrer, décrémenter un compteur de profondeur. Lorsque ce compteur égale zéro, revenir au mode. if (comment_count == 0) yybegin(YYINITIAL);

Reconnaître des balise JavaDoc ou Doxygen Texte en entrée: Prénom 1.0 */ Prénom Nom Tokens en sortie: TAG_AUTEUR : Prénom Nom TAG_VERSION : 1.0 NUM : 3 PLUS : + NUM : 4 SEMI : ; ERREUR LEXICAL : le ne peut être reconnu ID : Prénom ID : Nom