l2 informatique - inf404 - l. mouniermounier/enseignement/inf404/slides... · 2019-03-05 · l2...

23
Au menu 1 Bilan “calculette” 2 Projet 3 Compl´ ements de cours L2 Informatique - INF404 - L. Mounier 5 mars 2019 1 / 12

Upload: others

Post on 13-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Au menu

1 Bilan “calculette”

2 Projet

3 Complements de cours

L2 Informatique - INF404 - L. Mounier 5 mars 2019 1 / 12

Page 2: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Au menu

1 Bilan “calculette”

2 Projet

3 Complements de cours

Page 3: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Definition d’un langage

4 niveaux :

1 Alphabet = ensemble fini de symboles

2 Lexique = ensemble (fini ou non) de lexemes“categories lexicales” definies par une expression reguliere/automatede symbolesex : ENTIER = chiffre.chiffre*

3 Syntaxe = ensemble de “phrases bien construites”phrase = sequence de lexemes

I langage regulier : expression reguliere / automateI langage hors-contexte : grammaire hors-contexte

4 Semantique = sens des phrases (syntaxiquement correctes)

L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12

Page 4: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Structure d’un interpreteur

2 etapes : analyse et interpretation(avec construction eventuelle d’un arbre abstrait (Ast))

Analyse Syntaxique InterpreteurAnalyse LexicaleAstseq. de lexemes

seq. de symboles

Fichier entree

Resultat

Erreur Lexicale Erreur Syntaxique Erreur Semantique

Analyse lexicale : programmation d’un automateAnalyse syntaxique :

langage regulier → programmation d’un automate

langage hors-contexte → programmation d’un grammaire (LL(1))

⇒ algos “systematiques” (peuvent etre produits automatiquement !)

L2 Informatique - INF404 - L. Mounier 5 mars 2019 3 / 12

Page 5: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Au menu

1 Bilan “calculette”

2 Projet

3 Complements de cours

Page 6: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Objectifs du projet

Ecrire un interpreteur

1 choisir ce que l’on veut interpreter . . .

2 definir le langage d’entreealphabet, lexique, syntaxe, semantique

3 ecrire les fonctions d’analyse (lexicale et syntaxique)

4 definir et produire l’Ast

5 ecrire le “traitement” de l’Ast

⇒ meme demarche que pour la calculette

(et reutilisation partielle possible de certains modules !)

L2 Informatique - INF404 - L. Mounier 5 mars 2019 4 / 12

Page 7: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Quelques pistes possibles . . .

simulationrobot, systeme physique, “jeu”, . . .

execution/interpretationlangage de programmation, langage graphique, . . .

evaluation calculatrice etendue

traduction

verification de type

etc. . . .

L2 Informatique - INF404 - L. Mounier 5 mars 2019 5 / 12

Page 8: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Des exemples concrets

simulateur assembleur ARM

execution programme “Tortue Logo”

traduction langage L → C

simulateur langage L

langage “graphique”composition de figures elementaires

traduction langage L → HTML

etc. . . .

L2 Informatique - INF404 - L. Mounier 5 mars 2019 6 / 12

Page 9: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Au menu

1 Bilan “calculette”

2 Projet

3 Complements de cours

Page 10: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Enrichir le langage des EAG

notion de variable/identificateur+ affectation ou liaison nom ↔ valeur

structures de controle (if, while, . . .)

types de donnees

fonctions / procedures (+ recursivite ?)

etc.

L2 Informatique - INF404 - L. Mounier 5 mars 2019 7 / 12

Page 11: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Langage L1 : sequences d’affectations

ExempleX := 12 * 3 ;

Y := X + 5 ;

X := X * 2 ;

Analyse lexicale : 3 nouveaux lexemes . . .

IDF = seq. non vide de lettre/chiffre (debutant par lettre)

AFF = operateur d’affectation (:=)

SEPAFF = ’;’ (et fin de ligne devient un separateur)

Analyse syntaxique : etendre la grammaire

SeqAff → Aff SeqAff

SeqAff → ε

Aff → IDF AFF Eag SEPAFF

et ajouter Facteur → IDF

L2 Informatique - INF404 - L. Mounier 5 mars 2019 8 / 12

Page 12: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Langage L1 : sequences d’affectations

ExempleX := 12 * 3 ;

Y := X + 5 ;

X := X * 2 ;

Analyse lexicale : 3 nouveaux lexemes . . .

IDF = seq. non vide de lettre/chiffre (debutant par lettre)

AFF = operateur d’affectation (:=)

SEPAFF = ’;’ (et fin de ligne devient un separateur)

Analyse syntaxique : etendre la grammaire

SeqAff → Aff SeqAff

SeqAff → ε

Aff → IDF AFF Eag SEPAFF

et ajouter Facteur → IDF

L2 Informatique - INF404 - L. Mounier 5 mars 2019 8 / 12

Page 13: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Langage L1 : sequences d’affectations

ExempleX := 12 * 3 ;

Y := X + 5 ;

X := X * 2 ;

Analyse lexicale : 3 nouveaux lexemes . . .

IDF = seq. non vide de lettre/chiffre (debutant par lettre)

AFF = operateur d’affectation (:=)

SEPAFF = ’;’ (et fin de ligne devient un separateur)

Analyse syntaxique : etendre la grammaire

SeqAff → Aff SeqAff

SeqAff → ε

Aff → IDF AFF Eag SEPAFF

et ajouter Facteur → IDF

L2 Informatique - INF404 - L. Mounier 5 mars 2019 8 / 12

Page 14: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 15: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 16: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 17: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 18: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 19: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 20: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Evaluation ?

X := 12 * 3 ;

Y := X + 5 ;

X := X + Y ;

1 calculer 12 * 3 (c’est une EAG !)

2 memoriser le resultat (36) dans la variable X

3 calculer X + 12 (presque une EAG ?)→ utiliser la valeur 36 pour X

4 memoriser le resultat (41) dans la variable Y

5 calculer X + Y

(en utilisant les valeurs 36 et 41 pour X et Y)

6 memoriser le resultat (77) dans la variable X

L2 Informatique - INF404 - L. Mounier 5 mars 2019 9 / 12

Page 21: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Memoriser IDF ↔ Valeur

Structure de donnees de “Table des Symboles”

Interface (table symbole.h)

initialiser une table vide

inserer/remplacer un couple (IDF, valeur)

rechercher la valeur de IDF

afficher la table

Implementation (table symbole.c)

tableau, liste chainee, etc.

L2 Informatique - INF404 - L. Mounier 5 mars 2019 10 / 12

Page 22: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Interpreter une sequence d’affectation ?

Lors de l’analyse syntaxique :

fonction rec AFF() :

Aff → IDF AFF Eag SEPAFF

I Rec Eag calcule la valeur v de la partie droiteI inserer/remplacer (IDF,v) dans la table des symboles

fonction Rec Facteur :

Facteur → IDF

rechercher la valeur de IDF dans la table des symboles

L2 Informatique - INF404 - L. Mounier 5 mars 2019 11 / 12

Page 23: L2 Informatique - INF404 - L. Mouniermounier/Enseignement/INF404/slides... · 2019-03-05 · L2 Informatique - INF404 - L. Mounier 5 mars 2019 2 / 12. Structure d’un interpr eteur

Important pour la suite . . . !

Cette semaine en TP

fin calculette ! ! !ou TP5 (sequences d’affectations)

La semaine apres le partiel

Chaque binome envoie un mail a son enseignant de TP :

la composition du binome

son idee pour le projet !

L2 Informatique - INF404 - L. Mounier 5 mars 2019 12 / 12