Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf ·...

11
I I I I I ... I I I I I I I I session = %examen + %CC I session = max (examen , %examen + %CC ) I I I

Transcript of Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf ·...

Page 1: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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

[email protected]

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 ?

Page 2: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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.

Page 3: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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).

Page 4: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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

Page 5: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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]]....

}}

Page 6: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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).

Page 7: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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)}

Page 8: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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

Page 9: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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.

Page 10: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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).

Page 11: Analyse de Données Structurées - Cours 1treinen/teaching/ads4/cours/cours1.handout4.pdf · Analyse de Données Structurées - Cours 1 Introduction Séquentialisation I Opération

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