analyse de données structurées - cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf ·...
TRANSCRIPT
Analyse de Données Structurées - Cours 1
Analyse de Données Structurées - Cours 1
Ralf Treinen
Université Paris Diderot
UFR Informatique
Institut de Recherche en Informatique Fondamentale
15 janvier 2019
c© Ralf Treinen 2015-2018
Analyse de Données Structurées - Cours 1
Organisation
Organisation
I 12 cours d'amphi
I 12 séances de TP. Première séance de TP :I en Info : cette semaine,I en Math-Info : la semaine prochaine.
I Page web du cours (transparents, calendriers, . . .)
http://www.irif.fr/~treinen/teaching/ads4/
I Pre-requis :I cours Langages et Automates du S3 (il y aura des rappels de
l'essentiel)I Java
Analyse de Données Structurées - Cours 1
Organisation
Contrôle de connaissances
I Examen écrit
I Contrôle continu, consistant enI 20% TP notéI 80% projet
I
session1 = 50%examen1 + 50%CC
I
session2 = max(examen2, 50%examen2 + 50%CC )
Analyse de Données Structurées - Cours 1
Introduction
Qu'est-ce que c'est ce cours ?
I Qu'est-ce que c'est, des données structurées ?
I Qu'est-ce que c'est, l'analyse ?
I Quoi faire avec le résultat de cette analyse ?
Analyse de Données Structurées - Cours 1
Introduction
Données structurées
I Données qui ont une structure hiérarchique.
I Exemples :I les expressions arithmétiques en JAVA ;I les programmes en JAVA ;I les arbres en général.
I En Java souvent implémentées par des objets.
I Données pas structurées : des entiers, des �ottants, des chaînesde caractères. Elles ont une structure, mais elle est trop simple.
I Ces données simples nous concernent quand-même puisqu'ellespeuvent faire partie d'une structure plus complexe.
Analyse de Données Structurées - Cours 1
Introduction
Exemple : expressions arithmétiques
I Expression arithmétique : (x ∗ (3 + y))
I Structure d'arbre :*
x +
3 y
I Représentation en JAVA : voir dans quelque semaines.
Analyse de Données Structurées - Cours 1
Introduction
Exemple : expressions arithmétiques
I Il y a deux niveaux di�érents :I La représentation textuelle : écrit dans un �chier, par exempleI La représentation par la machine : dans le cas de JAVA, des
objets imbriqués (des objets qui contiennent des objets).Souvent appelé arbre de syntaxe abstraite.
I Nous allons voir qu'il y a encore un niveau intermédiaire :l'arbre de syntaxe concrète.
I Modèle de la représentation machine : le dessin de l'arbre,utilisé par des humains au tableau, sur le papier.
Analyse de Données Structurées - Cours 1
Introduction
L'analyse
I Traduire une représentation textuelle en représentation
machine
I Traduction automatique par un programme
I Nous allons écrire des analyseurs en Java.
I Nous allons aussi étudier des générateurs qui engendrent unanalyseur à partir d'une description.
Analyse de Données Structurées - Cours 1
Introduction
Le rôle de l'analyse
Représentation textuelle
Analyse
Arbre de syntaxe abstraite
Erreur
Traitement
Résultat
Erreur
Analyse de Données Structurées - Cours 1
Introduction
Exemple : Un morceau d'un programme
while b != 0
if a > b
a := a - b
else
b := b - a
return a
Donné en entrée à l'analyse.
Analyse de Données Structurées - Cours 1
Introduction
Arbre de syntaxe abstraite
Résultat de l'analyse.
Analyse de Données Structurées - Cours 1
Introduction
Ce qu'il faut écrire
I Une dé�nition précise des représentation textuelles qui sontlégales. Pour cela on va utiliser des expressions rationnelles, desgrammaires, . . . (je vais vous faire des rappels de ces notions).
I Une dé�nition des classes utilisées pour représenter lesdonnées.
I Un programme qui traduit une instance du premier (un texte)en une instance du deuxième (un objet JAVA).
Analyse de Données Structurées - Cours 1
Introduction
Séquentialisation
I Opération dans l'autre sens : traduire une représentationmachine (syntaxe abstraite) en texte.
I On pourrait attendre que les deux opérations sont un l'inversede l'autre mais ce n'est pas forcement le cas.
I Exemple : un compilateur de programme peut simplementignorer les commentaires dans le programme.
I L'opération de séquentialisation est beaucoup plus simple àmettre en ÷uvre que l'opération d'analyse.
Analyse de Données Structurées - Cours 1
Introduction
Quoi faire avec
Ce qu'il faut faire avec la syntaxe abstraite dépend del'application :
I Programmes : analyser (véri�er les types, par ex.), optimiser,engendrer du code exécutable : C'est la Compilation
I Des données : di�érents traitements possibles, par exemplecréation d'un rendu graphique.
Analyse de Données Structurées - Cours 1
Introduction
Document HTML (écrit à la main)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf8"><title>Programmation Fonctionnelle Avancée</title>
</head>
<body>
<center><h1>M1 2014/2014 : Programmation Fonctionnelle Avancée</h1><a href="http://www.univ-paris-diderot.fr">Université Paris-Diderot</a>,<a href="http://www.informatique.univ-paris-diderot.fr">UFR d'Informatique</a>
</center>
<h2><a name=salle>Salle et Horaires</a></h2>Cours : Jeudi, 15h30-17h30, salle 247E, Halle aux Farines.Premier cours: jeudi 18 septembre.<p>TD/TP : Mercredi, 13h30-15h30, salle 2032, bâtiment <i>Sophie Germain</i>Premier TD/TP: le mercredi 24 septembre.
Analyse de Données Structurées - Cours 1
Introduction
Document HTML : rendu par �refox
Analyse de Données Structurées - Cours 1
Introduction
Les Rendus du Projet OpenStreetMap
I Le projet maintient une base de données géographique,alimentée par des contributeurs volontaires et des données desources o�cielles (cadastre, poste, etc.)
I Le format XML est utilisé pour transmettre des données.
I Il y a des serveurs di�érents qui proposent des rendus selon desrègles spéci�ques.
Analyse de Données Structurées - Cours 1
Introduction
Document XML : OpenStreetMap<?xml version="1.0" encoding="UTF-8"?><osm version="0.6"
copyright="OpenStreetMap and contributors"license="http://opendatacommons.org/licenses/odbl/1-0/">
<way id="62378611"visible="true" version="8" changeset="20691652"timestamp="2014-02-21T11:23:38Z" user="thibdrev" uid="1279506">
<nd ref="779143878"/><nd ref="2198721646"/><nd ref="2198721727"/>........<tag k="amenity" v="university"/><tag k="building" v="yes"/><tag k="name" v="Halle aux Farines (Université Paris Diderot)"/><tag k="source" v="cadastre-dgi-fr source : Direction Générale des Impôts - Cadastre. Mise à jour : 2010"/><tag k="wheelchair" v="yes"/><tag k="wikipedia" v="fr:Université Paris VII - Diderot"/>
</way></osm>
Analyse de Données Structurées - Cours 1
Introduction
OpenStreetMap : Rendu français
c©OpenStreetMap contributors
Analyse de Données Structurées - Cours 1
Introduction
Document Wiki : Wikipédia
{{Entête label|BA}}{{Infobox Université| blason = Logo-P7.svg| taille blason = 120| nom=Université Paris Diderot<br> Paris 7| fondation={{Date|1|janvier|1971}}<ref name="décret de création">{{Légifrance|base=JORF|numéro=MENS0000215D|...
| type=[[Université en France|Université publique]] ...| budget= 158 Millions d'euros ...| ville=[[Paris]]| pays={{France}}| région=[[Île-de-France]]| campus= [[Campus Paris Rive Gauche|Paris Rive Gauche]],...| langue= [[Français]]| président=[[Christine Clerici]]....
}}
Analyse de Données Structurées - Cours 1
Introduction
Wikipédia : rendu
Analyse de Données Structurées - Cours 1
Introduction
Domaine d'application
I Analyse des textes selon des règles de langages arti�cielles
I Exemples : langages de programmation (Java,C,Python,. . . ),langages de données (HTML, XML, markdown, . . .)
I Ces langages ont été conçus par des Informaticiens avec lesobjectifs :
I utilisation par des humainsI praticable par des ordinateurs
I Le traitement automatique des langues naturelles est beaucoupplus di�cile ! ! Ce n'est pas notre sujet.
Analyse de Données Structurées - Cours 1
Introduction
Démarche
I La tâche n'est pas triviale : le programme doit reconnaître lastructure dans un texte, et générer une représentation de cettestructure.
I Découpage de l'analyse en plusieurs phases (sera expliqué lasemaine prochaine)
I La première phase utilise les expressions régulières vues dans lecours Langages et Automates.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Les expressions régulières
I Synomymes : expressions rationnelles, expressions régulières
I Une expression régulière dé�nit un ensemble de mots (aussiappelé un langage).
I Elles sont d'abord utilisées dans la dé�nition de la syntaxe deslangages informatiques (langages de programmation, langagesde données).
I Exemple : les règles de Java pour l'écriture du nom d'unevariable, d'une valeur entière, d'une valeur �ottante, d'unechaîne de caractères.
I Il faut comprendre ces règles pour savoir écrire correctementun document, mais aussi pour savoir lire (et pour écrire unprogramme qui sait analyser un document).
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Dé�nition des expressions régulières (classiques)
I Donnée : un alphabet Σ, c.-à-d. un ensemble �ni de symboles
I On dé�nit d'abord la syntaxe des expressions régulières :Dé�nition inductive de l'ensemble Reg.
I Puis on dé�nit une sémantique, à l'aide d'une fonctionrécursive L(·) : Reg→ P(Σ∗).
I La sémantique associe à chaque expression régulière unensemble de mots sur l'alphabet Σ.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Syntaxe des Expressions Régulières
Dé�nition inductive de l'ensemble Reg :
I ∅ ∈ Reg
I Pour tout symbole a ∈ Σ : a ∈ Reg
I ε ∈ Reg.
I Si r1, r2 ∈ Reg, alors r1r2 ∈ Reg
I Si r1, r2 ∈ Reg, alors r1 | r2 ∈ Reg
I Si r ∈ Reg, alors (r) ∈ Reg
I Si r ∈ Reg, alors r∗ ∈ Reg
I C'est tout.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
ATTENTION
I Nous écrivons | pour l'union, pas + comme c'était fait dans lecours Langages et Automates du S3.
I Raison : c'est la convention utilisée par presque tous les outilsinformatiques qui travaillent avec les expressions régulières.
I Autre raison : nous allons utiliser un peu plus tard le symbole+ pour autre chose.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Sémantique des Expressions Régulières
I L(∅) = ∅I L(a) = {a} pour tout a ∈ Σ
I L(ε) = {ε}I L(r1r2) = {w1w2 | w1 ∈ L(r1),w2 ∈ L(r2)}I L(r1 | r2) = L(r1) ∪ L(r2)
I L((r)) = L(r)
I L(r∗) = {w1 · · ·wn | n ≥ 0,wi ∈ L(r)}
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Exemples d'expressions régulières
I Nous choisissons pour l'exemple Σ = {a, b, c, d}I L(abc | bcd) = {abc, bcd}I L(aa(b | c)dd) = {aabdd, aacdd}I L((a | b | c | d)∗) : l'ensemble de tous les mots sur Σ
I L((a | c)∗) : l'ensemble de tous le mots formés des lettres a etc seulement
I L((aa)∗) : l'ensemble de toutes les séquences de a de longueurpaire.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Limites des expressions régulières
Il y a des langages qui ne sont pas réguliers, par exemple :
I L'ensemble des expressions arithmétiques correctementparenthésées
I L'ensemble de tous les mots qui contiennent le même nombrede a que de b
I L'ensemble de tous les palindromes
I L'ensemble de tous les mots dont la longueur est un nombrepremier
Analyse de Données Structurées - Cours 1
Expressions Régulières
Rappel : Les Expressions Régulières Classiques
Pourquoi des expressions régulières alors ?
I Expressivité limitée, mais . . .
I On sait faire plein de choses avec, par exemple :I Décider appartenance d'un mot au langageI Décider vide, universalitéI Calculer le complément par rapport à Σ∗
I Calculer l'intersection
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Sucre Syntaxique
Des extensions de syntaxe qui sont pratiques, mais qui n'apportentrien à l'expressivité.
I r? : soit le mode vide, soit un mot dans L(r)Abréviation pour ε | r
I r+ : une séquence non-vide de de mots dans L(r)Abréviation pour rr∗
I r{n,m} pour n,m ∈ N : une séquence de i mots dans L(r),où n ≤ i ≤ mAbréviation pour
r · · · r︸ ︷︷ ︸n
| . . . | r · · · r︸ ︷︷ ︸m
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Systèmes d'expressions régulièresI Il est souvent utile de faire référence à une expression régulière
déjà dé�nie.I Exemple :
r1 = (a|b) ∗ cr2 = r1 +
r3 = r1er2
I C'est simplement un raccourci :
r1 = (a|b) ∗ cr2 = ((a|b) ∗ c) +
r3 = (a|b) ∗ ce((a|b) ∗ c)+
I Attention : les cycles entre dé�nitions d'expressions régulièresne sont pas permis !
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Exemple : syntaxe lexicale des langages de programmation
I Décrit les règles d'écriture pour les mots élémentaires d'unlangage informatique.
I Exemples de classes de mots élémentaires : les noms desvariables autorisés, les constantes entières, les di�érents motsclefs, . . .
I La syntaxe lexicale est seulement une partie de la syntaxe d'unlangage informatique : il manque par exemple toutes les règlesde bonne structure du programme (parenthèses, . . .)
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Exemple : Identi�cateurs
I min = a | b | c | . . . | zI maj = A | B | C | . . . | ZI chiffre = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9I lettre = min | maj
I ident = lettre(lettre | chiffre | _)∗
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Raccourci : classes de caractères
I [abc] comme raccourci pour a | b | cI Si on a un ordre sur l'alphabet, comme pour UNICODE, on
peut aussi permettre :
min = [a− z]
lettre = [a− zA− Z]
I Le symbole . (un point) désigne n'importe quel symbole del'alphabet.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Classe de caractères par exclusion
I Certains outils permettent aussi de dé�nir des classes decaractères par exclusion :
r = [̂ _$]
pour la classe de tous les caractères de l'alphabet sauf les deuxcaractères souligné et dollar.
I C'est le symbole ˆ qui indique qu'il s'agit d'une exclusion.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Exemple : Chaînes de caractères
I Version simple : chaînes qui ne contiennent pas "
nonquote = [̂ "]
string = "nonquote ∗ "
I Permet par exemple :I "bonjour"I ""
I Ne permet pas :I "une chaîne sans finI "abc"defg"
Analyse de Données Structurées - Cours 1
Expressions Régulières
Extensions
Exemple : Chaînes de caractères
I Plus sophistiqué : avec un caractère d'échappement \
nonspecial = [̂ "\]string = "(nonspecial | \.) ∗ "
I Permet par exemple :I "abc\ndef\"ghi"I "\\\\"
I Ne permet pas :I "abc"def"I "abcd\"
Analyse de Données Structurées - Cours 1
Expressions Régulières
Outils
Exemple : l'outil egrep
I Vu en S1 : outil grep, pour chercher un mot dans un �chier
I En fait, l'outil grep accepte aussi des expressions régulièrescomme motif de recherche.
I Malheureusement, il y a des systèmes de notationsincompatibles pour ces expressions régulières : la page man degrep les appelle des expressions régulières simples et desexpressions régulières étendues (angl : basic regular expressions
et extended regular expressions).
Analyse de Données Structurées - Cours 1
Expressions Régulières
Outils
Pourquoi deux systèmes de notion ?
I En théorie le monde est simple : les symboles d'un alphabets'appellent a, b, c, etc., et ne risquent pas d'être confondusavec les symboles spéciaux comme (, ), +, ∗, etc.
I Si on veut traiter des vrais langages informatique on a a�aire àdes alphabets qui contiennent tous les caractères spéciaux.
I Comment se débrouiller pour distinguer un symbole lettre x dusymbole spécial x , tout en permettant des expressions aussisimples et lisibles que possible ?
I Il y a (au moins) deux solutions incompatibles à ce problème.
Analyse de Données Structurées - Cours 1
Expressions Régulières
Outils
Les Expressions Régulières Étendues de UNIX
I Correspondent plus au moins aux expressions régulières commedé�nies ici :
I | pour union, opérateurs post�x ∗, +, ?, {n,m}I Quelques classes de caractères qu'on peut utiliser à l'intérieur
de [ ], comme [:digit:] (chi�res), [:upper:] (lettres enmajuscules), [:lower:] (minuscules), etc.
I Utiliser le symbole d'échappement \ pour transformer uncaractère spécial en lettre normale.
I C'est l'inverse pour les expressions régulières basiques : utiliserun \ pour rendre à un caractère sa signi�cation spéciale.
I Voir la page man, et le TP1, pour plus de détails
Analyse de Données Structurées - Cours 1
Expressions Régulières
Outils
Utilisation de egrep
I Utiliser la commande egrep pour chercher avec une expressionrégulière dans un �chier (ou grep -E)
I Utilise les expressions régulières étendues, c.-à-d. on doitutiliser le caractère d'échappement pour transformer uncaractère spécial en caractère normal.
I A�che toutes les lignes qui contiennent un mot décrit par lemotif (sauf options -x, -o, etc.)
I Attention aux symboles spéciaux de la shell : Normalement ondoit mettre l'expression régulière entre des apostrophes ' et '.
I Exemple : egrep 'Odette|Gilberte' swann.txt