JFlex : Un générateur de



Documents pareils
Module d anonymisation

Programmer en JAVA. par Tama

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours 1 : La compilation

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

Flux de données Lecture/Ecriture Fichiers

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Traitement de données

as Architecture des Systèmes d Information

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

TP1. Outils Java Eléments de correction

arcopole Studio Version 3.3

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Java DataBaseConnectivity

D E S C R I P T I O N D E S É L É M E N T S C L E F S D ' U I M A

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Tutoriel d installation de Hibernate avec Eclipse

TP1 : Initiation à Java et Eclipse

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

INF 321 : mémento de la syntaxe de Java

Oracle WebLogic Server (WLS) 11gR1 ( et ) Installation sur Oracle Linux 5 et 6 Hypothèses Installation Oracle Linux 5 (OL5)

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Cours 14 Les fichiers

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Votre premier projet Android

Java Licence Professionnelle CISII,

Editer un script de configuration automatique du proxy

Java Licence Professionnelle CISII,

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Manuel Utilisateur MISE A JOUR DU CLIENT SOFIE VERS LA VERSION 5. v0.99

Programmation en Java IUT GEII (MC-II1) 1

La base de données XML exist. A. Belaïd

Générer du code à partir d une description de haut niveau

COMPARAISONDESLANGAGESC, C++, JAVA ET

Plan du cours. Historique du langage Nouveautés de Java 7

Corrigé des exercices sur les références

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Open Source Job Scheduler. Installation(s)

Environnements de développement (intégrés)

Eclipse atelier Java

Programmation Par Objets

Groupe Eyrolles, 2005, ISBN :

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction à Eclipse

Introduction au langage Java

Environnements de développement (intégrés)

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Threads. Threads. USTL routier 1

Travaux Pratiques : Lucène - Gestion d un index plein texte

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Utilisation de Jakarta Tomcat

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

PROCEDURE D'INSTALLATION OPENREPORTS

COSWIN 7I INSTALLATION VERSION HTML

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

Manuel d installation de l application Dimona New via SMS

Fiche n 25 01/03/2002. Power Archiver

Un ordonnanceur stupide

bbc Launch Pad Juillet 2011 Version 10.0

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

INSTALLATION Advantage Database Server

Une introduction à Java

Systeme d'exploitation

Création d une application JEE

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Analyse de problème Certificat (clé-usb) Mac

Remote Method Invocation (RMI)

Economies d énergie par GPO

.NET - Classe de Log

2. Comprendre les définitions de classes

Correspondances Windows-Linux

Projet de programmation (IK3) : TP n 1 Correction

TD3: tableaux avancées, première classe et chaînes

Installation. Conception, mise en œuvre, hébergement, exploitation et

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

7 Développement d une application de MapReduce

PROGRAMMATION PAR OBJETS

Sécurité des applications web. Daniel Boteanu

SQL Parser XML Xquery : Approche de détection des injections SQL

Cours 1: Java et les objets

Théorie de la Programmation

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Documentation CAS à destination des éditeurs

Approche Contract First

Installation et prise en main

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

Transcription:

JFlex : Un générateur de scanner pour JAVA Pierre Chauvet Institut de Mathématiques Appliquées

Plan du cours 1. Installation de JFlex - Téléchargement - Ajustements pour l utilisation 2. Génération de scanners - Qu est-ce qu un scanner? - Description du lexique - Scanner pour expression arithmétique 3. Utilisation d un scanner - Description du scanner - Utilisation - Parser

Installation de JFlex - Téléchargement - Ajustements pour l utilisations

Téléchargement L adresse du site de JFlex est: http://jflex.de/ - Cliquer sur «Download» - Choisir «JFlex + all documentation» et cliquer sur le fichier zip (jflex-num_version.zip) - Décompresser où vous voulez l installer

Téléchargement Le fichier zip une fois décompressé se présente sous la forme: Fichier batch jflex.bat (à modifier «à la main») Documentation (en anglais) Exemples de syntaxes et de scanners correspondants Application JFlex.jar : générateur de scanners Sources et outils (Ant, etc.)

Ajustements Trois possibilités: - Modifier le fichier \bin\jflex.bat pour que les chemins soient corrects - Créer votre propre fichier batch avec les commandes les plus courantes et utiles - Intégrer la ligne de commande de JFlex dans votre éditeur préféré

Ajustements Modifier le fichier \bin\jflex.bat pour que les chemins soient corrects: @echo off REM Please adjust the paths JFLEX_HOME and JAVA_HOME to suit your needs REM (please do not add a trailing backslash) set JFLEX_HOME=C:\JFLEX REM only needed for JDK 1.1.x: set JAVA_HOME=C:\JAVA à modifier REM ------------------------------------------------------------------- set CLPATH=%JAVA_HOME%\lib\classes.zip;%JFLEX_HOME%\lib\JFlex.jar REM for JDK 1.1.x %JAVA_HOME%\bin\java -classpath %CLPATH% JFlex.Main %1 %2 %3 %4 %5 %6 %7 %8 %9 REM for JDK 1.2 rem java -Xmx128m -jar %JFLEX_HOME%\lib\JFlex.jar %1 %2 %3 %4 %5 %6 %7 %8 %9

Ajustements Créer votre propre fichier batch avec les commandes les plus courantes et utiles : java -jar D:\3_IMA\Cours_Java\JFlex\lib\JFlex.jar -v %F

Génération de scanners - Qu est-ce qu un scanner? - Description du lexique - Scanner pour expression arithmétique

Qu est-ce qu un scanner? Un langage (informatique tel que Java ou XML) nécessite : - un lexique : ensemble des mots du langage (vocabulaire) - une grammaire : règles d agencement des mots du lexique if (b==true) {dec.px=col[i].val;} if (b==true) {dec.px=col[i].val;} if (b==true) {dec.px=col[i].val;} Scanner Parser if (b==true) {dec.px=col[i].val;} if (b==true) {dec.px=col[i].val;} Scanner = Analyseur Lexical : Outil qui permet de parcourir un texte (chaîne de caractères) en le décomposant sous la forme d une suite de mots relatifs à un lexique donné. On appelle souvent ces mots des tokens.

Qu est-ce qu un scanner? Exemple : expression arithmétique le lexique est formé de ( ; ) ; + ; - ; * ; / ; entiers ; réels ; fonctions ; constantes ; où - entiers=suite de caractères dans {0,,9} - réels=suite de caractères dans {0,,9} + «.» + suite de caractères dans {0,,9} - fonctions={sin, cos, exp, } - constantes={pi, e, } Décomposer «2*(4+sin(pi))/2.46» en tokens

Description du lexique Avec JFlex un lexique est décrit dans un fichier *.flex : c est un fichier texte qui respecte un lexique et une grammaire! Le répertoire Examples contient dans chaque sous- répertoire un fichier *.flex (s en inspirer pour créer son propre lexique ).

Scanner pour expression arithmétique Lexique décrit dans le fichier «arithmetic.flex» Génère une classe publique appelée ArithmLexer, qui implémente l interface cst Définition d ensemble de caractères

Description Scanner pour du expression lexique arithmétique Lexique décrit dans le fichier «arithmetic.flex» Définition des «mots» du lexique (tokens)

Scanner pour expression arithmétique La commande : java -jar D:\3_IMA\Cours_Java\JFlex\lib\JFlex.jar -v arithmetic.flex produit le fichier: «ArithmeticLexer.java» qui contient la classe «ArithmeticLexer».

Utilisation d un scanner - Description du scanner - Utilisation - Parser

Description du scanner Dépend du lexique défini dans le fichier *.flex C est une classe publique qui implémente éventuellement une interface dans laquelle sont définis des constantes représentant les tokens. Elle peut s utiliser conjointement avec d autres classes JAVA: -Yytoken.java (très utile) - Utility.java (affiche messages d erreur) Pour détecter simplement (et élégamment?) la fin de fichier, j ajoute systématiquement cette méthode: public boolean ateof( ) {return zzateof;}

Utilisation Le scanner généré par jflex.jar s utilise typiquement de la manière suivante: public boolean parse(string fname) { boolean b; try { ArithmLexer scanner = new ArithmLexer( new java.io.filereader(fname) ); PrintWriter fi= new PrintWriter(new new BufferedWriter(new FileWriter("Sortie.txt"))); b=true; do { token=scanner.yylex(); b=!scanner.ateof(); if(b) { System.out.println(token.toString()); fi.println(token.tostring()); } } while(b); fi.close(); return true; }

Utilisation Suite (blocs catch): catch (java.io.filenotfoundexception e) { System.out.println("File not found : \""+fname+"\""); return false; } catch (java.io.ioexception e) { System.out.println("IO error scanning file \""+fname+"\""); System.out.println(e); return false; } catch (Exception e) { System.out.println("Unexpected exception:"); e.printstacktrace(); return false; } }