Compilation. Plan. CM1 - Introduction & Analyse syntaxique. COMP, M1 info [0]

Documents pareils
Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Machines virtuelles Cours 1 : Introduction

Cours 1 : La compilation

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Évaluation et implémentation des langages

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Chapitre 2. Eléments pour comprendre un énoncé

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

Cours de Programmation 2

Cours 1 : Qu est-ce que la programmation?

CH.6 Propriétés des langages non contextuels

UML (Paquetage) Unified Modeling Language

Théorie des Langages

Nom de l application

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grammaires d unification

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Modélisation des données

ALGORITHMIQUE ET PROGRAMMATION En C

Algorithmique et Programmation, IMA

Quelques éléments de compilation en C et makefiles

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Introduction à MATLAB R

TP 1. Prise en main du langage Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Compilation (INF 564)

Cours de Master Recherche

UE Programmation Impérative Licence 2ème Année

INTRODUCTION AUX METHODES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

Cours d Informatique

Utilisation des tableaux sémantiques dans les logiques de description

MIS 102 Initiation à l Informatique

Le modèle standard, SPE (1/8)

Qualité du logiciel: Méthodes de test


Théorie de la Programmation

majuscu lettres accent voyelles paragraphe L orthographe verbe >>>, mémoire préfixe et son enseignement singulier usage écrire temps copier mot

Fondements de l informatique Logique, modèles, et calculs

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Présentation du langage et premières fonctions

Vérification formelle de la plate-forme Java Card

Fonctions de deux variables. Mai 2011

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Cours d Analyse. Fonctions de plusieurs variables

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Les structures de données. Rajae El Ouazzani

RTDS G3. Emmanuel Gaudin

Python - introduction à la programmation et calcul scientifique

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Intelligence Artificielle et Robotique

Rappels sur les suites - Algorithme

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Annexe : La Programmation Informatique

Urbanisation de système d'information. PLM 3 (Product Lifecycle Management) Élaborations, versions, variantes, configurations

Intelligence Artificielle Planification

Université Paris-Dauphine DUMI2E 1ère année, Applications

chapitre 4 Nombres de Catalan

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Compter à Babylone. L écriture des nombres

L informatique en BCPST

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

Document d aide au suivi scolaire

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

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

Diapo 1. Objet de l atelier. Classe visée. Travail en co-disciplinarité (identité et origine académique des IEN)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Bases de données. Chapitre 1. Introduction

Introduction à Eclipse

TP1 : Initiation à Java et Eclipse

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Raisonnement par récurrence Suites numériques

Plus courts chemins, programmation dynamique

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Formula Negator, Outil de négation de formule.

TD 1 - Structures de Traits et Unification

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Cours Fonctions de deux variables

Représentation d un entier en base b

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Mineure Architectures Orientées Services SOA Business Process Modeling (BPM) Mineure SOA. Business Process Modeling (BPM)

Business Process Modeling (BPM)

Algorithmique et Programmation Fonctionnelle

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

Continuité et dérivabilité d une fonction

Université de Bangui. Modélisons en UML

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Algorithme. Table des matières

Transcription:

Compilation CM1 - Introduction & Analyse syntaxique ISTIC, Université de Rennes 1 Sebastien.Ferre@irisa.fr COMP, M1 info 1 / 55 Plan [0] Introduction Pourquoi étudier la compilation? Structure d un compilateur Structure du cours Analyse syntaxique Rappels et notations angages de type 3 angages de type 2 2 / 55

Plan [0] Introduction Pourquoi étudier la compilation? Structure d un compilateur Structure du cours Analyse syntaxique Rappels et notations angages de type 3 angages de type 2 3 / 55 Pourquoi étudier la compilation? Un compilateur utilise une grande quantité de techniques de beaux algorithmes, utilisés dans de nombreux autres contextes Résultat d une réflexion de 60 ans dans le sens de toujours plus d automatisation un problème crucial et bien posé «traduire des programmes d un langage dans un autre en préservant la sémantique et en étant le plus efficace possible» les compilateurs sont des programmes très complexes et en même temps très sûrs rôle important de la formalisation 4 / 55

Pourquoi étudier la compilation? Approcher l intimité des langages de programmation mieux les comprendre pour mieux programmer? percevoir les limites de ce qui est calculable délimitation de classes de problèmes et leurs solutions a jonction entre le génie logiciel et le système le système est responsable du chargement des programmes (ex., édition des liens) le compilateur est responsable de la production de programmes chargeables (ex., tables de symboles) Ne concerne pas que les grands langages de programmation universels nombreux petits langages de script ou d échange de données (ex., M) langages de bases de données (ex., SQ) les mêmes techniques sont à l œuvre! 5 / 55 Ce que fait un compilateur 1. Analyse du programme source trouver la structure du programme signaler les éventuelles erreurs de syntaxe formalisation par des règles de grammaire structure = arbre de dérivation dépasse largement le cadre de la compilation concerne toute application qui lit des entrées formatées selon une grammaire 2. Production de sa traduction dans un langage cible avec préservation de la sémantique (impératif) et efficacité du code produit (autant que possible) 6 / 55

Donnée = Programme es données sont des programmes, et réciproquement point particulier des compilateurs aussi à l oeuvre dans les systèmes d exploitation (gestion des processus) distinguer le programme «textuel» et le programme «en actes» (fonction) sémantique = lien entre le texte et la fonction 7 / 55 Diagramme en T Relation entre compilateur, source et cible sémantique langage source même langage source compilateur format langage cible même sémantique même langage cible 8 / 55

Auto-compilation (bootstraping) On souhaite écrire le compilateur dans son langage source. ex., écrire un compilateur Java en Java! = Java, = C, = langage machine éxécutable dérivation copie 2 3 2 3 invention 1 1 0 vérification 9 / 55 Évolution dans un schéma d auto-compilation On souhaite améliorer le compilateur (code plus rapide). évolution copie 4 3 rapide 5 2 rapide lent 4 lent rapide 5 rapide rapide 10 / 55

es phases de la compilation elles forment un pipeline pas nécessairement en séquence stricte face avant traitement d erreur face arrière analyse lexicale analyse syntaxique analyse production optimisation sémantique de code intermédiaire production de code cible optimisation table des symboles 11 / 55 es représentations du programme a représentation du programme évolue d une phase à l autre. face avant face arrière séquence de caractères séquence d unités lexicales arbre syntaxique abstrait arbre syntaxique décoré code intermédiaire code cible 12 / 55

Analyses lexicales et syntaxiques Analyse lexicale des lettres aux mots langages formels de type 3 expressions régulières et automates finis Analyse syntaxique des mots aux phrases (structure du programme) langages formels de type 2 grammaires algébriques et automates à pile + vérifications contextuelles (hors grammaire) ex. : variables déclarées avant d être utilisées 13 / 55 Analyses sémantiques détection des erreurs non-syntaxiques analogie : vérification des accords en nombre et en genre en français essentiellement : analyse de types vérification vs inférence typage fort vs faible défini formellement dans les langages de type M (ex., Objective Caml) 14 / 55

Production de code intermédiaire entre face avant et face arrière format relativement indépendant des langages source et cible réutilisation de la face avant pour un autre langage cible (ex., une autre architecture) réutilisation de la face arrière pour un autre langage source factorisation des optimisations indépendantes de la cible 15 / 55 Optimisations et production de code la production du code intermédiaire est locale traduction de chaque trait du langage source compositionalité code inefficace les optimisations ont souvent besoin d une vision globale ex. : savoir si une variable est utilisée après tel point de programme techniques : analyse de flots de données, interprétation abstraite production du code cible très lié à l architecture (code binaire) et au système d exploitation (format des exécutables) 16 / 55

Structure du cours 8 CMs et 8 TDs 1. Rappels sur les langages formels 2. Analyse syntaxique descendante rapidement : ascendante et tabulée 3. Grammaires attribuées 4. Vérification de types 5. Génération de code (expressions et instructions) 6. Génération de code (structures de données et adressage) 7. Optimisations (bref) 8. Analyse de flots de données 17 / 55 Structure du cours 1 DM (devoir à la maison) en binôme, 1/4 de la note de CC approfondissement du cours et préparation des TPs 8 TPs TP1 (2 séances) : conversion de RDF/Turtle en RDF/Ntriples (1/4 note CC) TP2 (6 séances) : réalisation d un compilateur de VS+ (1/2 note CC) face avant : vérification de type et génération de code 3 adresses face arrière fournie 18 / 55

Environnement pour les TPs 2 propositions, au choix : 1. Java + ANTR + face arrière maison ANTR = ANother Tool for anguage Recognition librairies Java maison pour la représentation intermédiaire et la production de code cible 2. OCaml + stream parsers + VM suppose une connaissance de OCaml (enseigné en 3) face arrière : VM = ow-evel Virtual Machine suppose plus d autonomie car ne colle pas exactement au cours (mais il y a un très bon tutoriel pour OCaml) À choisir dès le DM, mais changement encore possible au TP1. 19 / 55 Plan [0] Introduction Pourquoi étudier la compilation? Structure d un compilateur Structure du cours Analyse syntaxique Rappels et notations angages de type 3 angages de type 2 20 / 55

Analyse syntaxique 1ère phase de la compilation fonction : vérification de l appartenance du programme source au langage source sinon, traduire le programme n a pas de sens cela suppose de pouvoir spécifier la syntaxe concrète du langage source théorie des langages formels (phase très bien formalisée) 21 / 55 Théorie des langages formels fondée sur les correspondances entre 3 entités : les langages () les grammaires (G) les automates (M) et entre 3 questions portant sur un mot m : m appartient à un langage? m est engendré par une grammaire G? m est reconnu par un automate M? 22 / 55

Rôle des grammaires Comment spécifier un langage (un ens. de mots)? si est fini : possible par énumération si est infini : possible par un ensemble de règles syntaxiques Phrase Sujet Verbe Complément Expression Expression + Expression Definition (grammaire) Une grammaire G est un ensemble de règles syntaxiques engendre un langage (G) Une grammaire G engendre un unique langage (G), mais plusieurs grammaires peuvent engendrer un même langage. 23 / 55 Familles de grammaires il existe plusieurs formalismes/familles de grammaires qui engendrent différentes familles de langages imbriquées les unes dans les autres selon la hiérarchie de Chomsky type 3 : grammaires/langages réguliers ou rationnels (regular) type 2 : grammaires/langages hors-contextes ou sans contexte (context-free) type 1 : grammaires/langages contextuels ou avec contexte (context-sensitive) type 0 : grammaires/langages récursivement énumérables (recursively enumerable) ATTENTION : Une grammaire G 2 de type 2 peut engendrer un langage de type 3, si il existe une grammaire G 3 de type 3 qui engendre le même langage ((G 3 ) = (G 2 )) 24 / 55

Rôle des automates a décision m (G) peut être automatisée. Definition On dit qu un automate M reconnaît un langage s il reconnaît tous les mots du langage et aucun autre. (M) dénote la langage reconnu par un automate M il existe une hiérarchie de formalismes/familles d automates parallèle à celle des grammaires/langages type 3 : automates à nombre fini d états (finite state automaton) type 2 : automates à pile (pushdown automaton) type 1 : automates linéairement bornés (linear bounded automaton) type 0 : machine de Turing (Turing machine) 25 / 55 Articulation entre langage, grammaire et automate e jeu en compilation consiste à 1. spécifier un langage par une grammaire G c-à-d. tel que (G) = le langage et sa grammaire peuvent aussi être conçus de concert 2. dériver de la grammaire G un automate M qui reconnaisse le même langage c-à-d. (M) = (G) = des outils permettent d automatiser cette dérivation (traduction) ex., ex/yacc, JavaCC, ANTR (pour le type 2) ce sont des compilateurs d analyseurs syntaxiques 26 / 55

Plan Rappels et notations alphabets langages langages de type 3 expressions régulières automates finis langages de type 2 grammaires hors-contexte automates à pile automates des items non-contextuels analyse syntaxique descendante analyse syntaxique ascendante (bref) analyse syntaxique tabulée (bref) 27 / 55 Alphabet, symboles et mots alphabet V : ensemble fini de symboles (caractères ou unités lexicales) mot x sur V : une suite finie de symboles de l alphabet V x = x1 x 2...x n pour un mot de longueur n x i est le i-ième symbole du mot x est la longueur du mot x mot vide ɛ : mot de longueur 0 V n : ensemble des mots sur V de longueur n V = n 0 V n : tous les mots (finis) sur V V + = V \ ɛ : tous les mots sauf le mot vide 28 / 55

Concaténation et découpage des mots x.y ou xy : la concaténation des mots x et y définition : xy = x1...x n y 1..y m, avec x V n et y V m élément neutre ɛ : ɛ.x = x.ɛ = x associativité : x.(y.z) = (x.y).z = x.y.z = xyz non commutativité : x.y y.x soit w = xyz un mot sur V x est un préfixe ou facteur gauche de w (propre si yz ɛ) z est un suffixe ou facteur droit de w (propre si xy ɛ) y est un sous-mot ou facteur de w (propre si x ɛ z) 29 / 55 angages formels Un langage formel est un ensemble de mot, donc un sous-ensemble de V. opérations ensemblistes union : 1 2 intersection : 1 2 complémentation : = V \ opérations rationnelles produit : 1 2 = {xy x 1, y 2 } répétition : n = {x 1...x n i 1..n : x i } fermeture : = n 0 n 30 / 55

Plan langages de type 3 expressions régulières automates finis langages de type 2 grammaires hors-contexte automates à pile automates des items non-contextuels analyse syntaxique descendante analyse syntaxique ascendante (bref) analyse syntaxique tabulée (bref) 31 / 55 angages de type 3/rationnels/réguliers particulièrement favorables à une mise en œuvre informatique peuvent être décrits par des expressions régulières, qui jouent ici le rôle de grammaire Definition (Expression régulière) r (r) une expression régulière engendre un langage {} {} ɛ {ɛ} a {a}, pour tout a V (r 1 r 2 ) (r 1 ) (r 2 ) (r 1 r 2 ) (r 1 )(r 2 ) (r 1 ) (r 1 ) 0 mot 1 mot de 0 caractere 1 mot de 1 caractère union produit fermeture 32 / 55

Automates finis e formalisme d automates correspondant au type 3 est celui des automates finis Definition (Automates finis) M = (Q, V,, q 0, F) est un automate fini où : V (fini) est l alphabet d entrée, Q est un ensemble fini d états, q 0 est l état initial, F Q est l ensemble des états finaux, Q V Q est la relation de transition. 33 / 55 Fonctionnement d un automate fini analogie avec une machine automate fini : M = (Q, V,, q 0, F) configuration : (q, w) avec q Q, w V initiale : (qo, w) où w est le mot à reconnaître finale : (q f, ɛ) où q f F machine mémoire transition entre 2 configurations : loi de fonctionnement (q, aw) a M (p, w) ssi (q, a, p) suite de transitions : (q, xw) M (p, w) = (q, x 1... x n w) x 1 M (p 1, x 2... x n w)... x n M (p, w) 34 / 55

Fonctionnement d un automate fini analogie avec une machine acceptation : M accepte (reconnait) un mot w V ssi (q o, w) M (q f, ɛ) avec q f F ssi il existe une suite de transitions de l état initial vers un état final qui consomme le mot w Definition (langage accepté) (M) = {w V (q o, w) M (q f, ɛ), q f F} 35 / 55 Représentation par un graphe d un automate fini Rappel : graphe = noeuds + arcs état noeud...... état initial noeud avec flèche entrante...... état final noeud doublement cerclé...... transition arc étiqueté par le symbole lu...... Example :...... 36 / 55

ecture du graphe représentant un automate Un w-chemin est un chemin dans le graphe tel que w est la concaténation des étiquettes des arcs. Un mot w est reconnu s il existe un w-chemin de l état inital à un état final. Exemple :...... 37 / 55 Automates non-déterministes exemple d automate ci-dessus n est pas déterministe : plusieurs transitions possibles dans certaines configurations : ex., (4,bw) ou (0,aw) besoin de représenter un ensemble de configurations possibles besoin de plus de mémoire 38 / 55

Déterminisation d automates finis Theorem Tout automate M peut être déterminisé, càd, il existe un automate déterministe M tel que (M ) = (M) (qui reconnait le même langage). Bonne nouvelle : il existe un algorithme de déterminisation. 39 / 55 Algorithme de déterminisation d automates Connaissant un automate fini M = {Q, V,, q 0, F}, l automate déterministe qui accepte le même langage est complètement caractérisé de la façon suivante : M det = (Q, V, δ, q 0, F ) avec Q P(Q), q 0 = {q 0}, F = {S Q S F {}}, δ(s, a) = {p (q, a, p), q S} pour tout a V. a déterminisation peut entraîner une explosion du nombre d états (exponentiel dans le pire cas). 40 / 55

Automate déterminisé {0} b a b a {2, 3} b b {3, 4} {2, 4, 5} a a b b {1, 2} a a b {1} {2} {3} a a a {4} b {2, 4} b {4, 5} b 41 / 55 imites et usages des langages rationnels Ils ne rendent pas compte des structures imbriquées : ex : parenthésage des expressions ex : blocs imbriqués ex : langage {a n b n n N} En conséquence pas adaptés aux langages de programmation langages de type 2 mais adapté à la description des éléments de ces langages ex : identificateurs, nombres, commentaires utilisé pour l analyse lexicale (découpage de la chaine d entrée en suite d unités lexicales) 42 / 55

angages de type 2 Definition es langages de type 2 sont ceux engendrés par les grammaires hors-contexte. 43 / 55 Grammaire hors-contexte Definition (Grammaire hors-contexte) (V N, V T, P, S) est une grammaire hors-contexte (ou sans contexte, ou non contextuelle) où, V T : alphabet de symboles terminaux V N : alphabet de symboles non-terminaux S V N : symbole de départ ou axiome P V N (V N V T ) : ensemble des productions (ou règles) Exemple :...... 44 / 55

Dérivations es productions servent de règles de réécritures Si (A α) P alors σaτ G σατ G est la fermeture réflexive et transitive de G Example :...... 45 / 55 angage engendré Definition (langage engendré) (G) = {u V T S G u} u VT est une phrase ne contient que des terminaux plus de dérivations possibles phrase de G si S G u α (V T V N ) est une proto-phrase peut comporter des non-terminaux des dérivations supplémentaires sont possibles proto-phrase de G si S G α 46 / 55

Productions récursives Productions de la forme A α Aα A Aα A α A Sinon si A G α Aα récursive directe récursive (directe) gauche récursive (directe) droite récursivité indirecte Example :...... 47 / 55 Arbres de dérivation Definition (Arbre de dérivation) C est la trace d une dérivation dans laquelle on a oublié l ordre des dérivations élémentaires noeud A : une occurence de dérivation pour une production A α chaque α i est la racine d un sous-arbre ou une feuille feuille a : un terminal pour une phrase un terminal OU un non-terminal pour une proto-phrase Exemple :...... 48 / 55

Amiguite Definition (ambiguité) 1. une phrase est ambigüe si elle admet plusieurs arbres de dérivation 2. une grammaire est ambigüe si elle engendre au moins une phrase ambigüe Exemple :...... 49 / 55 Ambiguité ambiguité est une faiblesse en informatique et doit être évitée responsabilité du concepteur de la grammaire propriété non-décidable des grammaires possibilité de modifier la grammaire sans changer le langage engendré mais en restreignant les analyses possibles Exemple : associativité gauche du...... le choix des bons arbres dépend de la sémantique du langage 50 / 55

Automates des langages de type 2 e formalisme d automate correspondant au type 2 est celui des automates à pile. Ils vont permettre d automatiser la reconnaissance d un mot en se laissant guider par les éléments du mots. a différence avec les automates finis est dans l utilisation d une pile d états dans leur configuration (au lieu d un unique état). 51 / 55 Automate à pile Definition (Automate à pile) M = (V, Q,, q 0, F) avec V : alphabet (fini) d entrée Q : ensemble fini d états q 0 : état initial F Q : états finaux Q + V 0 1 Q : relation de transition notez bien les puissances ajoutées par rapport aux automates finis 52 / 55

Fonctionnement d un automate à pile automate à pile : M = (V, Q,, q o, F) configuration : (γ, w) Q V γ est la pile d états (fond à droite) config. initiale : (q0, w) pour un mot w à reconnaitre config. finale : (q f γ, ɛ) avec q f F transition : (γ 2 γ 1, aw) M (γ 3 γ 1, w) si (γ 2, a, γ 3 ) suite de transitions : comme pour automates finis acceptation d un mot w V w (M) ssi (q o, w) M (q f γ, ɛ) avec q f F 53 / 55 Des grammaires aux automates Problème Comment construire un automate à pile M à partir d une grammaire G tel que (M) = (G)? quels états (Q)? quelles transitions ( )? grammaire = spécification du langage (génération) automate = implémentation du langage (reconnaissance) C est un problème de compilation! langage source : grammaires langage cible : automates à pile préservation de la sémantique : (G) = (M) efficacité : automate déterministe, si possible 54 / 55

Des grammaires aux automates Décomposition du problème : 1. traduction : dérivation d un automate des items non-contextuels (AINC), indéterministe 2. optimisation : réduction de l indéterminisme par application de restrictions différentes restrictions différents types d analyses pour différents types de grammaires ex. : descendante, ascendante, tabulée 55 / 55