• Aucun résultat trouvé

Compilation

N/A
N/A
Protected

Academic year: 2021

Partager "Compilation"

Copied!
3
0
0

Texte intégral

(1)

HAL Id: hal-03213316

https://hal-univ-rennes1.archives-ouvertes.fr/hal-03213316

Submitted on 30 Apr 2021

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of

sci-entific research documents, whether they are

pub-lished or not. The documents may come from

teaching and research institutions in France or

abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est

destinée au dépôt et à la diffusion de documents

scientifiques de niveau recherche, publiés ou non,

émanant des établissements d’enseignement et de

recherche français ou étrangers, des laboratoires

publics ou privés.

Compilation

Olivier Ridoux

To cite this version:

(2)

Com

pila

tio

n

2021

x –

idou

ier R

Oliv

Mot

iva

tion

s

Lesc om pilateur sso ntde sp rog ram mes quip erm ette ntde tra dui re des pro gra

m- loita exp ed' èm syst arun sp able cut exé ent ctem dire pas sont quine rces sou mes

- ncde ntdo ette erm sp s.Il able cut exé ent ctem dire s cible es mm gra pro des en tion

fai re cro ire qu'un langag ede pro gram mat ion est nat ifmê mequa ndil nel' est pas . Ile stpe upr oba ble defa ire carri ère chez uné dite urde com pilateur ,ma is ily

a ro- sp quele ent ouv its ond esi êm n.M tio pila om lac udier d'ét ons rais res d'aut

gramme sp erm ette ntà unh um ainde dire àu ne mac hin eq uoi faire ,la réa lité

est ireà d ainde um unh pour yen lemo aussi sont mes ram rog sp ;le tile sub plus

un tio pila com erla étudi coup, e.Du hin mac une and em ild qu' ce ain hum re aut

n mes ystè s s etle ain) téhum (cô l gicie elo géni ele ntr ree ont renc erla tudi àé ent revi

d'expl oita tio n (cô tém achine ). Cette pos ition priv ilégié ee stuni que, et mér

ite e. loré exp tre d'ê

L'éc art cro issa nte ntr ele sp rog ram mes etle sm achine sre nd les com pilateur

sde cons sont carils ûrs èss lstr logicie des sont t,ce tan our .P xes ple com plus en plus

-n te érê int ontun des étho sm .Ce ues atiq tém sys es hod mét s antde tilis nu tse trui

soi, ete lless 'ap pliq uen tà laré alis ation d'aut res logic iels quele sc om pilateur

s.La qu' ce par che mar qui erie géni d'in mple exe uvel unno donc ffre no tio pila com

elle . es isé mal for ien esb hod mét s ede utilis

Autr erais on, deno mbr eus es applic atio ns cont ienne ntde s mod ule sd' expo rt

qui pro des sont e.Ce utr una dans mat for d'un nnée unedo uire rad àt ent sist con

- urs dele artie unep ent utilis isqui s,ma pilateur om lesc esque mpl ussi spl gramme

mét hode s.Pl us raf inés ,ma is depl use npl usfr éque nts, les dom ain spe cific lan

- des. étho mesm smê ele œuvr en ussi uxa nte ette )m (DSL ges gua

Enf in, étudi erla com pila tio ne stle mei lle urmo yen dere ntre rda ns l'in tim ité

des gra ede œuvr en se lami aître onn rec d'y afin ion mat ram rog dep es langag

nds . les iel rfic upe ess renc ffé auxdi ter arrê des' ôtque plut es cip prin

1

Ana

lyse

st

atique

de

pr

ogr

am

me

Lestr ansf orm atio ns deco de exig ent de vérif ier sans exé cut er lep rogr am me

que lese toutes ans iesd vra sont » ee urd ale lav ient cont «x comme ions ondit desc

xé- ion ens ext tés rié rop sp ntde ceso (AS).Or ue tiq sta se aly 'anl de le lerô 'est .C ions cut

- nc tdo doi 'AS .L bles cida indé nt sso elle qu' dit ice eR ed rèm Théo ntle ,do les nel

four nirde sré pon ses appr oché es ,ma is sûr es .Po urde sp rop rié tés dés irées l'A

Sne pon tré doi elle is s,ma vraie ent nem tai cer sont lles u'e rsq quelo oui re ond rép peut

- en utri nepe eon mist essi np atio évalu ette Dec cas. asle stp n'e quece dès non dre

dédui re d'in cor rec t.On trai tesy mét riq uem ent lesp rop rié tés crain tes ,ou men ace s. L'an alys ed efl otd ed onn ées (AFD )e stune mét hode d'A Squi exp lore le gra phed

e nse tio truc ins les sont duGFC ts somme e.Les mm gra pro )du (GFC ôle ontr ec td flo

t truc uxins .de ns.Ex tio truc ins sd' ble ossi sp ment îne ncha lese sont tés) ien (or rcs lesa

- est elle onn diti con tion truc ins ,une che flè arune sp iée rel nt eso enc équ ns se tion

rel iée aux deux ins truc tio nsqui peuv ent las uiv re. Tou tes les trac esd' exé cut

ion xécut ese trac des pas sont ne mins sche ain cert mais he, rap dug mins che des sont

a- . na ye qu'il ions écut d'ex plus voit AFD ;l' n atio xim pro l'ap e résid làque 'est .C s ble

L'A FD vér ifie les pro prié tés d'un pro gra mm ee npa rco urant son GFCpo urs im ule

r ro- sp urle t)po avan yse (anal ion cut exé del' ns lese dans lefait Elle ion. cut exé son

prié tés quidé pende ntdu passé ,co mme «x cont ient lav ale urd ee » etda nsle

sens stp n'e «x omme ,c ur fut du ndent dépe squi elle urc re)po arriè yse anal e( ers inv

lus nso atio xim pro l'ap ide celu comme se analy del' sens .Le » rit rééc re 'êt antd luav

nt . AFD del' eur ept conc sdu tante por im ons écisi desd

L'A FD peut deve nirtr ès com ple xeda nsle cas gén éral ,ou auc ont raire ses im plif

ier tio truc ins sd' ite (su s ase eb sd bloc les x. ,e liers ticu par cas des dans oup beauc

ns antde port com rés ctu tru ns bie mes ram rog sp oule s) lle tie uen séq ent purem

s e. rair arbit ent hem anc debr pas mais es, oucl sb tde se lle nne tio ndi sco ,de ces uen séq

Pré

para

tio

n d

u co

de

exé

cuta

ble

Lafa ce arr ièr ed oite nfin pré par erle code cib le pour l'e nviro nnem ent d'e xécu

tion s,co stre regi ede mbr x.no :e les cib es raint cont les ter pec res alors faut .Il visé

des fich atde orm etf ion itat plo 'ex ed èm syst arle esp urc sso desre tion ges hines, mac

ier. ,po eau niv àce es ppliqué ea êtr ent peuv tes ran amélio ns atio rm sfo tran es utr D'a

ur . moire demé chie rar hié dela esou nibl spo nsdi tio truc sins xde mieu rau fite pro

7

Les déclarations et les notations de constante inspirent alors des règles axiomes, tandis que les expressions plus complexes sont régies par d'autres règles dont la plus importante est la règle de formation des appels de fonction (function call). À l'aide de ces règles de déduction on peut dériver des preuves de bon typage, et même reconstituer des types implicites. Une propriété extrêmement désirable est

que si un programme est bien typé, il ne pourra se produireaucuneerreur de

type à l'exécution. C'est le typagesain(sound) des langages commeML.

Génération de code intermédiaire. C'est là, en sortie de laface avant, que se

rencontrent lestrois langages. On privilégie une approchecompositionnelleoù le

code produit pour une structure composite del'ASTest construit en combinant

les codes produits pour ses composants. On peut modéliser cela par des règles de grammaire à attributs où les attributs (synthétisés) sont lecodeproduitc, et pour les expressions laplaceoù leur valeur est rangée,p. En voici des exemples, avec d'abord une machine à pile pour cible, puis une machine à registres :

Attention : leopde l'AST appartient au source, leopdu code produit appartient à la cible, et le op de la règle appartient au langage du compilateur. Ici, ils sont tous notés de la même façon, mais en réalité le premier pourrait se noter '+', le second ADD, et le dernier 'plus' ; ils appartiennent bien à 3 langages différents, comme un guide de traduction du norvégien en italien qui serait écrit en hongrois.

La face arrière

La générationcompositionnelledu code est sûre mais produit un code souvent

inefficaceparce que chaque sous-structure engendre son propre code localement

sans vue globale sur ce que font les autres sous-structures. 5

Les 3 langages. L'icône de traduction rappelle que la compilation fait se rencontrer

3 langages: les langagessource(SSdans l’icone de traduction) etcible(CC), et le langage dans lequel estécritle compilateur (TT). Il est crucial de savoir de quel lan-gage on parle. Ex. traduire des expressions arithmétiques vers un système de calcul formel ; le traducteur ne peut pas sans précaution évaluer lui-même (langage de traduction) les expressions (langage source, ex.pp××21/2) car il ne le fera pas

forcé-ment avec la précision du système de calcul (langage cible).

De la face avant à la face arrière. Un compilateur effectue une grande variété

d'opérations que l'on peut diviser en deux classes.

1. Laface avant(ouFront-end) comprend toutes les opérations qui vérifient que le source est conforme à son format, et toutes celles qui en extraient les informations utiles à la suite. La face avant ne connaît pas le langage cible.

2. Laface arrière(ouBack-end) comprend toutes les opérations qui forment un

code conforme au format cible et à l'efficacité attendue. Elle utilise les informations extraites par la face avant, mais ne connaît pas le langage source.

Mais alors où se rencontrent les trois langages ? À l'interface ! En sortie de la face avant, on traduit le source en un code intermédiaire pour une cibleidéalisée, pour ensuite le passer à la face arrière qui en fait un code exécutable pour une cible

réelle. C'est le seul endroit où les3 langagessont en présence les uns des autres.

Cela permet de concevoir des familles de compilateurs qui partagent le même code intermédiaire, et avecnfaces avant etmfaces arrière d'obtenirn××mcompilateurs.

La face avant

Syntaxe abstraite. L'analyse syntaxique d'un mot-programme révèle tous les détails

du source : mots clés, parenthèsage, ponctuation, etc. Ces détails sont inutiles pour un compilateur et on demande donc aux analyseurs syntaxiques de ne représenter que les traits pertinents. On appelle cette représentationl'arbre de syntaxe

abstrai-te (AST, pourAbstract Syntax Tree). Une grammaire abstraitedécrit comment

former les AST, et c'est autour d'elle que s'organise la face avant.

L'ordre textuel des éléments source ne compte pas pour un AST, et on peut modé-liser la syntaxe abstraite par des règles de déduction dont la conclusion représente une tête de règle de grammaire et les hypothèses son corps. Ex. la règle concrète

Stmt⟶⟶'while' Expr '{' Stmt '}'est abstraite en une règle de déduction qui se lit « sieest uneexpressionetsunstatement, alorswhile(e,s)est unstatement».

3

Zoom avant dans le processus de compilation

Les diagrammes en T (tombstone diagrams, 1961). Leworkflowdes projets de

compilation peut être vraiment compliqué. Ex. quand le source est composite, on

doit se demander qui compile quoi et quand. Lesdiagrammes en Taident à se

représenter l'enchaînement de ces opérations. Ces diagrammes sont constitués d'icônes que l'on assemble selon les règles illustrées par le schéma suivant :

Une première catégorie d'icônes représente les fichiers,caractériséspar leur for-matet leurfonction(c-à-d. leur syntaxe et leur sémantique). Elles comportent toujours un pied carré dans lequel est indiqué le format, et une tête qui représen-te la fonction : la têreprésen-terondepour les fonctions quelconques, la têtecarréepour la fonction d'interprétation (exécuter un programme), et la têterectangulairepour la fonction de traduction (traduire un fichier en un fichier de même fonction, mais de format différent). Une seconde catégorie d'icônes représente les plateformes

d'exécution. Elles ont toujours la forme d'un triangle portant le nom du système. Modéliser le workflow d'une tâche complexe consiste à assembler des icônes de façon à obtenir les fichiers cibles désirés en partant des fichiers sources disponi-bles. Ex. le workflow suivant construit un auto-compilateur de S (source) vers C (cible), initialement écrit en T (traduction), mais qui s'exécute sur C.

2

Calcul dirigé par la syntaxe. Une bonne façon de présenter descalculs dirigés par

une structureest de les attacher à sa grammaire sous la formed'attributs valuéset derègles de calcul. On attache des attributs à chaque symbole de la grammaire, et une règle de calcul à chaque règle de la grammaire. Pour chaque nœud del'ASTla règle de calcul associée à la règle de grammaire qui l'a formé est exécutée. C'est la somme des calculs locaux qui réalise l'effet global attendu.

Ex. pour évaluer des expressions, un programme les lirait en utilisant des règles de grammaire concrète, ex.Expr⟶⟶Prod '+' Expr,puis construirait un AST en utilisant des règles de grammaire abstraite, ex. « Sie1ete2sont des expressions, alors

plus(e1, e2)est aussi uneexpression», et enfin évaluerait l'expression en utilisant

des règles de grammaire abstraite avec attribut, ex. « Sie1ete2sont des

expres-sionsqui valentv1etv2, alorsplus(e1, e2)est uneexpressionqui vautv1+v2».

Héritage et synthèse. Pour analyser le calcul des attributs, on distingue les attributs

synthétisésqui vont des hypothèses vers les conclusions, c-à-d. des feuilles de l'AST vers sa racine, et les attributshéritésqui vont des conclusions vers les hypothèses, c-à-d. de la racine de l'AST vers ses feuilles.

Ex. pour évaluer des expressions avec variables, un programme utiliserait un attri-but synthétisévpour la valeur des expressions, et un attribut héritémpour une mémoire où trouver la valeur des variables.

Héritage et synthèse permettent de raisonner sur les attributs, et en particulier de détecter lesdépendances circulairesentre attributs. Certains systèmes concrets

(ex.ANTLRouXtext) donnent des notations différentes aux deux sortes d'attribut.

D'autres ne permettent qu'une sorte d'attribut (ex.synthétisépourYACC).

Typage. Apparus d'abord pour dénoter le codage de l'information en mémoire, les

types ont évolué vers une notion depropriétésde programmes. Les types peuvent

être totalementexplicitesdans les programmes ou (partiellement)implicites. On peut vérifier leur cohérence lors de la compilation (typagestatique, comme enML), ou lors de l'exécution (typagedynamique, comme enScheme), voire jamais (très rare), voire un mélange de ces possibilités (comme enC). Pour raisonner sur les types en tant quepropriétéon en formalise les lois sous forme derègles de déduc-tionoù le jugement élémentairet :ttexprime que l'expressionta le typett.

4 Des anal yse ss tat iqu es de pro gram me per mette nt d'appo rte rle point devu

e les ier érif dev met per tqui ,e lle nne itio pos om hec pproc l'a anqueà quim bal glo

condit ions d'ap plic atio nde tra nsf orm atio nsa mélio rant es duco de cib le. Ex.po urune mac hineà regi stre s, A[i,j ]:=A [i,j ]+B [i,j ] pou rra ite ngendr erle code x 1 =@i x 2 =me m[x 1 ] x 3 =@A x 4 =x 2 + +x 3 x 5 =@j x 6 =me m[x 5 ] x 7 =nb _co l_A x 8 =x 6 × ×x 7 alors que x 1 =@i x 1 =me m[x 1 ] x 2 =@A x 2 =x 1 + +x 2 plus est effi cace (moi nsd' ins truc tio nse td 'ac cès mémo ire ,mo ins dere gist res) . Tra nsf orm atio nsa mélio rant es. Elle sp erm ette ntde sim plif ier desi nst ruc tio ns,

de : ple xem re .Pa er prim sup les mede oumê ces, ffica use depl par cer pla rem les

Élim ina tio nd eso us-e xpres sio nsc om mune s (CSE ,po ur Commo nS ubexp res sio

n déjà ient cont requi gist unre omd' len par on ressi exp erune plac rem ): n tio ina Elim

lav aleur del' exp ressi on. x val = expr ; … ; i i y = expr ⟶ ⟶CSE x val = expr ; … ; i i y = x

val point queau ier Vérif

i x val cont ient cer taine ment lav aleur de expr

. erun plac rem ): n pagatio Pro Copy ur (CP,po ie ecop nd tio paga Pro

nom dere

gis- ). ant ché sé eca e(l copi stla ile dont stre regi omdu len par tre

x cop y = x orig ; … ; i i z = x cop y ⟶ ⟶CP x cop y = x orig ; … ; i i z = x orig

x i point queau ier Vérif

cop y cont ient cer taine ment uneco pie de x orig

. ex. ): n tio ina Elim ode dC Dea ur ,po (DCE t mor ode ec nd tio ina Élim

sup prim

er es. aislu jam ront nese squi aleur desv rent gist enre nsqui uctio nstr desi

x no use = … ; i i ⟶ ⟶DCE i i

x i point queau ier Vérif

no use n'e stpl uslu avan td 'êtr eré écri t. Norm ale men t,on nec rée pas duco de mort exp rès, mais CP ace te ffetin dire

ct.CP s, pie sco ede cré CSE ns: atio rm sfo ran cest le bouc en ète rép ion urquo stpo C'e

lespr opa ge en cré antdu code mor t,e t DCE sup prim ele sco des deve nusm orts . 6

Conc

lusi

on

L'ét ude dela com pila tio ndo nnede so utils pour affr ont er avec conf iance

des e: ïsm éro l'h tde ien vera relè ent rem aut squi atique ém probl

•Les diag ram mes en T pour laco nstr ucti on des wor kflow s detr adu ctio n. •La thé orie des lan gage s pour lac arac tér isat ion des sou rces etle uran alyse ,e

nse . urs alyse desan ude plét om l'inc tde se ire amma desgr uïté big l'am iantde méf

•La thé orie des gra mm aire sa ttrib uées pour lami se en œuvr ede sop éra tion sde

la . ue tiq man lasé re igu réf ep tax syn quela ussi aa ndr vie sou Onse ant. eav fac

•La thé orie des sys tèm esd ed édu ctio n pour mod élis ere tp rog ram mer lav érif

ica- . aites str sab ire amma sgr etle pe dety tion

L'an alys est atiq ue pour obt eni rune appr oxim atio nde ceque vafa ire lep rog ram

- r. cute exé sl' san ble meci

•Et diffé rent salg orit hm es quiint erv ienne ntpo urré sou dre des probl èm es ponc

- . res gist ere nd catio l'allo pour phe gra de ge ria colo x.le s,e tuel

Lac om pila tio nme ta ussi en œuvr ede spr inc ipe sde l'alg orit hm ique ,c omme «A

gir hm orit alg bon itle nfa tio enta rés rep ne bon «La ou al» lob tg effe un our lp loca

. sde ent em chang tede sui rune nise rga d'o est pilateur om unc aild' rav let ffet, Ene

rep rés ent atio n: liste dec ara ctè res, dele xèm es, AST ,A STd éco ré, GFC,lis te d'in

s- tc. ,e urs vale les, mbo s,sy code s,de tion truc

Ces mét hode ss 'ap pliq uen te np artic ulie rà lac om pila tio nde «p etits »lan gag

es t,ou crip des es gag :lan es èm syst les dans ent ouv uss npl use depl ve trou qu'on

dom ain spe cifi clanguage s(D SL), utilis és en géni elo gicie l,sy stèm es d'e xplo itat

ion, . etc ux, ,je usique ,m érique ienum ager ,im ent em nnanc ordo

Bib

lio

gra

phi

e

•« Com pila teu rs : pr inc ipe s, t ech niq ues et ou tils » , A ho, Se thi e t Ul lm

an ité) -rééd ulti ,1986 m nod (Du

•« Le s com pila teu rs : thé orie , con str uct ion , g éné rat ion » , W ilhelm et Mau

rer ité) ti-rééd 1995 mul on, ass (M

•« Mod ern com pile rd esig ,G rune ,Ba l,J aco bse tLang endo en (W ile y,2000

) 1999rééd ann, fm Kau gan (Mor cott ,S atic gm pra guage lan ing mm gra Pro •«

ité) 2007) lf, she Book tic agma (Pr arr deP » ence efer RR NTL eA initiv Def The •«

•« Imp leme ntin gD omain -Sp ecif icLan guage sw ith Xtex ta nd X ten de B etti

ni g, 2013) hin ublis cktP (Pa

8 S C T S C S S C C S C C S C S S C S S C C copie copie comparaison pour vérification imitation à la main idest déclaré de typett

incl id : tt décl cest une notation de typec : tt ttconst

op : tt×tt2tt3 x 1: tt1 x2: tt2 expr op(x op 1, x2) :tt3 f : tt1tt2 x : tt1 call f(x) : tt call 2 e : expr s : stmt

while while( e, s ) : stmt while

e1 : expr e2 : expr

plus plus( e plus

1, e2) : expr

e1 : expr : v1 e2 : expr : v2

plus plus( e plus

1, e2) : expr : v1+ v2

e1 : expr(m) : v1 e2 : expr(m) : v2

plus plus( e plus

1, e2) : expr(m) : v1+ v2 var(id) : expr(m) :m[id]var

e1: expr : c1 e2: expr : c2 op

op(e1,e2) : expr : c1Ÿc2Ÿopcode

var var(e) : expr : ee,@e const const(e) : expr : pushce var var(e) : expr : pushm @e const const(e) : expr : p=e,p e1: expr : c1,p1 e2: expr : c2,p2 op

op(e1,e2) : expr : c1Ÿc2Ÿp=p1 op p2,p

s : stmt : c1 e : expr : c2,p2 until

until(s, e) : stmt : label l1c1 Ÿc2Ÿifnzp2goto l1

x 25 =@j x 26 =me m[x 25 ] x 27 =nb _co l_A x 28 =x 26 × × x 27 x 29 =x 24 + +x 28 x 30 =x 10 + + x 20 [x mem 29 ]=x 30 x 9 =x 4 + + x 8 x 10 =me m[x 9 ] x 11 =@i x 12 =me m[x 11 ] x 13 =@B x 14 =x 12 + + x 13 x 15 =@j x 16 =me m[x 15 ] x 3 =@j x 3 =me m[x 3 ] x 4 =nb _co l_A x 3 =x 3 × × x 4 x 2 =x 2 + + x 3 x 3 =me m[x 2 ] x 4 =@B x 1 =x 1 + + x 4 x 1 =x 1 + + x 3 x 1 =me m[x 1 ] x 1 =x 3 + +x 1 [x mem 2 ]=x 1 x 17 =nb _co l_B x 18 =x 16 × × x 17 x 19 =x 14 + +x 18 x 20 =me m[x 19 ] x 21 =@i x 22 =me m[x 21 ] x 23 =@A x 24 =x 22 + +x 23 format ff fonction I P ff P X ff X C S ff ff T C S fichier quelconque fichier

interpréteur fichier traducteur

plateforme d’exécution

(3)

Un graphe non-orienté pondéré et colorié SM M SB B C Lc R Q Lt V N

Prérequis : théorie des langages et logique, théorie des graphes, calculabilité - lire, apprendre, comprendre.

Pliage : recto visible (autre face), traits

gris

rentrants, traits

rouges

saillants. Découper selon le trait rouge entre les deux , puis achever le pliage.

1

1⃣⃣

Théorie des graphes

Un graphe est une structure constituée d'un ensemble de sommets, souvent noté V (pour Vertices en anglais), et d'un ensemble d'arcs, souvent noté E (pour Edges). On appelle parfois les sommets des nœuds. On considère soit des graphes non-orientés, et dans ce cas chaque arc est une paire de 2 sommets {e, f}, parfois noté e −− f, qu'on appelle les extrémités de l'arc (on dit aussi que e et f sont voisins), soit des graphes orientés, et dans ce cas chaque arc est un couple de 2 sommets (e, f), parfois noté e ⟶⟶ f, qu'on appelle le sommet initial et le sommet

final de l'arc. Comme partout en théorie des ensembles, les sommets peuvent être quasiment n'importe quoi.

On dessine les graphes finis de façon intuitive en représentant les sommets par des points, des icones, des textes, etc., et les arcs par des flèches ou des traits selon qu'ils sont orientés ou non. Le tout peut être décoré de différentes annotations selon l'usage qui est fait du graphe ou ce qu'il représente (voir la figure ci-dessus, ainsi que pour les exemples qui suivent). Une fois défini un graphe, on peut s'intéresser à ses chemins, suites de ei telles que ei −ei+1 ou ei ⟶ei+1, à l'existence de chemins entre deux sommets choisis a priori, à l'existence de

com-posantes fortement connexes (dont tous les éléments sont connectés à tous les autres par au moins un chemin ; le graphe ci-dessus forme une composante fortement connexe), etc. On peut associer aux arcs un poids, et alors qualifier les chemins par le poids total de leurs arcs (ex. w(B −− Q − −Lt −− V −− N) = 310 km). On peut alors s'intéresser aux paires de sommets les plus distants l'un de l'autre (ex. {B, SM}). On peut aussi s'intéresser à l'existence de cycles, c'est-à-dire de chemins qui reviennent à leur point de départ (ex. B −− M −− C −− B).

On peut aussi s'intéresser aux propriétés qui sont vraies sur tous les chemins, ou seulement sur au moins un chemin, ou celles qui sont vraies sur tous ou au moins un chemin qui mène vers un sommet ou qui en part (ex. tous les chemins au départ de SM passent par R).

On peut aussi colorier un graphe, ex. en assignant des couleurs aux sommets de sorte que deux sommets voisins aient toujours deux couleurs différentes (comme sur l'illustration où 3 couleurs sont nécessaires au total à cause des triangles, ex. V−−R−−N−−V), ou bien en assignant des couleurs aux arcs de sorte que deux arcs ayant une extrémité commune soient toujours de couleurs différentes. Ce sont des problèmes NNPP-complets qui modélisent toute sorte de problèmes concrets intéressants.

2

2⃣⃣

Systèmes de déduction

Les systèmes de déduction sont un moyen de formaliser la sémantique des systèmes formels. Ils établissent quels juge-ments sont vrais ou faux. Ils décrivent d'une façon graphique comment former des règles de déduction et les combiner pour former des preuves. On va l'illustrer en prenant l'exemple des axiomes de Armstrong utilisés en théorie des bases de

données pour raisonner sur les dépendances fonctionnelles :

• transitivité : X → Y et Y → Z entraînent X → Z

• inclusion : Y ⊆ X entraîne X → Y

• augmentation : X → Y entraîne X, W → Y, W

Ici, les jugements sont des notations de dépendances fonctionnelles : X → Y .

La transcription des axiomes de Armstrong en règles de déduction se fait de la façon suivante :

Une règle de déduction relie des jugements hypothèses (au dessus de la ligne) et un jugement conclusion (au dessous). Ces règles sont en fait des schémas de règles où des lettres, ici X, Y et Z, jouent le rôle de méta-variables qui peuvent être remplacées par n'importe quoi de légal dans leur contexte : ici, des ensembles de noms d'attributs de schéma relationnel. Certaines règles de déduction n'ont pas d'hypothèse ; on les appelle des axiomes (ne pas confondre les axiomes du système de déduction et les axiomes de la théorie modélisée par le système de déduction). Ici, les jugements conclusions des axiomes sont les dépendances fonctionnelles de l'application modélisée, ex.ville → taxe, ville → météo, et taxe → prix. On peut alors former des instances des règles de déduction en remplaçant les méta-variables par des expressions du domaine modélisé, puis former des arbres preuves en agençant les instances de règles de telle sorte qu'à une instance d'hypothèse correspond toujours une instance de conclusion ou une instance d'axiome. Voici des exemples de preuve : Les règles de déduction se comportent alors comme des règles d'une grammaire d'arbre de preuve. On trouve aux feuilles de cet arbre (en haut) les jugements axiomes, et à sa racine (en bas) un jugement conclusion qui est le théorème démontré par cette preuve.

Calculabilité

La théorie de la calculabilité montre très facilement par un argument de cardinalité de l'ensemble des fonctions et de l'ensemble des programmes que beaucoup de fonctions ne sont pas réalisables par un programme ; on dit qu'elles ne sont pascalculables. Mais cela ne dit pas lesquelles ne le sont pas.

Lethéorème de Ricedélimite une catégorie de fonctions qui ne peuvent pas être calculables ; ce sont les fonctions qui décident des propriétésextensionnellesde programme. C'est-à-dire des propriétés de programme qui sont en fait des propriétés de leursémantique, ou dit autrement, des propriétés telles que deux programmes qui ont la même sémantique ont forcément la même propriété. Par exemple, le nombre de lignes d'un programme n'est pas une propriété extensionnelle, car il est facile de concevoir que deux programmes de tailles différentes aient la même sémantique. Inversement, ne jamais boucler est une propriété extensionnelle, ainsi que ne jamais rendre la valeur 0, ou réaliser une fonction croissante. De même, toutes les propriétés opérationnelles mais liées à la sémantique, comme faire une division par zéro, un débordement de tableau ou une écriture dans une mémoire non réservée, sont des propriétés extensionnelles. Aucun algorithme ne peut décider à coup sûr et sans boucler si ces propriétés sont vraies pour un programme quelconque.

X → Y Y → Z trans

X → Z X → YY ⊆ X incl X, W → Y, WX → Y aug

ax

ville → taxe ville → météo ax taxe → prix ax

ax

ville → taxe aug

ville, prix → taxe, prix

ax

ville → taxe aug

ville → ville, taxe

ax

ville → météo aug

ville, taxe → taxe, météo trans

ville → taxe, météo

1

1⃣⃣

Théorie des langages et ses propres prérequis

La théorie des langages , avec ses propre prérequis, est bien sûr un prére-quis à l'étude de la compilation, même si il ne faut pas réduire la seconde à

une application de la première.

En particulier, connaître la théorie des langages rationnels et celles des

langages algébriques est indispensable. Comprendre le rôle et le fonction-nement des analyseurs syntaxiques l'est aussi, ainsi que savoir évaluer la qualité d'une grammaire relativement à la relation syntaxe-sémantique, aux possibles ambiguïtés, et aux limitations d'une stratégie d'analyse synta-xique que l'on ne choisit pas toujours.

On se rappellera donc que la grammaire

Expr ⟶⟶ Expr '++' Expr | Expr '××' Expr | Num | '(' Expr ')'

est ambiguë et qu'une façon de supprimer cette ambiguïté est de lui substi-tuer la grammaire suivante :

Expr ⟶⟶ Prod '++' Expr | Prod

Prod ⟶⟶ Fact '××' Prod | Fact

Fact ⟶⟶ Num | '(' Expr ')'

De même, on se rappellera que la grammaire

Diff ⟶⟶ Diff '−−' Elem | Elem

ne convient pas à un analyseur LL ou par descente récursive, parce qu’elle est récursive à gauche, mais qu’elle engendre la même chose que

Diff ⟶⟶ Elem RestDiff RestDiff ⟶⟶ '−−' Elem RestDiff | ee qui convient très bien (forme normale de Greibach). Dans les deux cas, la nouvelle grammaire produira des arbres de dérivation qui ne sont pas de la forme que la grammaire initiale naïve aurait produi-te. On peut donc avoir intérêt à reconstituer l’arbre de dérivation attendu avant tout autre opération.

N'oubliez jamais !

Unmodèleest toujoursimparfait, parfoisutile, et c'est tout ce qu'on peut lui demander (d'après George Box 1978, voir aussi a contrario les cartes parfaites et inutiles de Jorge Luis Borges 1946 et Lewis Carroll 1893, cartes à l'échelle 1/1). L'informatique ne travaille que sur lareprésentationdes choses ; il lui faut des capteurs et des actionneurs pour toucher les choses. Par contre, travailler sur des représentations de représentations de … est courant. Par exemple,440est une représentation d'un entier qui peut être la représentation de la mesure d'une fréquence, tout comme1B8, etLa3pourraient être d'autres représentations de la

même fréquence. Il faut toujours se demander ce qui a du sens par rapport à ce qui est modélisé.

2

2⃣⃣

Arbres

Un graphe non-orienté sans cycle est appelé un arbre. Dans sa représentation graphique, de chaque sommet d'un arbre partent des ramifications qui ne se rejoignent jamais, et chaque sommet peut jouer le rôle de point de départ de l'ensemble des ramifications. On peut désigner un sommet particulier pour être la racine d'un arbre. On parle alors d'un arbre enraciné. En pratique, la plupart des arbres sont enracinés et on omettra de le spécifier. Un point de vue alternatif qui ne s’appuie pas sur la théorie des graphes, mais sur celle des ensembles, est de définir un arbre par un ensemble de sommets, parmi lesquels un sommet racine est distingué, et les autres sommets sont partitionnés en n sous-arbres numérotés de 1 à n.

En général, on dessine un arbre enraciné en plaçant la racine en bordure du dessin plutôt qu'au centre, mais le choix de la bordure est une affaire de tradition. Par exemple, sont souvent représentés racine en haut les arbres de dérivation, les arbres de décision (parfois racine à gauche !), les arbres d'indexation en base de données, les arbres structures de données (ex. ceux de l'algorithme UNION-FIND, ou d'un système de fichiers, parfois aussi racine en haut à gauche). Par contre, les arbres de preuve sont souvent représentés racine en bas, et dans ce cas la racine est la conclusion de la preuve. Remarque : pour les arbres les plus concrets, ex. structures de données, on parle plus facilement de nœud (node en anglais) que de sommet.

L'enracinement d'un arbre crée une orientation de fait selon que l'on s'éloigne ou qu'on se rapproche de la racine. On appelle fils d'un sommet ses voisins qui sont plus éloignés que lui de la racine. On dit qu'il en est le sommet père. On dit qu'un arbre est binaire (n-aire) si ses sommets ont tous 2 (n) fils ou aucun. On appelle feuille un sommet qui n'a pas de fils. On appelle niveau d'un sommet le nombre d'arcs qui le séparent de la racine et hauteur

d'un arbre le niveau de sa feuille de plus grand niveau.

La représentation concrète (graphique, physique ou informatique) d'un arbre crée aussi une orientation de fait des fils de chaque sommet. On parle alors de 1er, 2nd, … fils, ou de fils de gauche, de droite, etc.

Un arbre peut être parcouru de plusieurs façons différentes, illustrées ici par des algorithmes de parcours d'arbres binaires : • En profondeur d'abord (DF pour Depth First) :

Input : un sommet ; Output : un mot formé des sommets de l'arbre enraciné en ce sommet,

DF(s) == s • if s est une feuille then ee else DF(s.left) • DF(s.right) fi

Correspond à la façon polonaise préfixe de linéariser une expression. Il s'agit de la variante préfixe car le s est produit avant ses fils. Il existe une variante

postfixe où le s est produit après, et une variante infixe où il est produit entre ses fils. • En largeur d'abord (BF pour Breadth First) :

Input : un mot formé de un sommet ; Output : un mot formé des sommets de l'arbre enraciné en ce sommet,

BF(w) == if w = ee then ee

else w.first • BF(w.rest • if w.first est une feuille then ee else (w.first.left • w.first.right) fi) fi

Correspond à un parcours niveau par niveau. Est utile quand la recherche d'un nœud dans un arbre s'accompagne de l'objectif de minimiser la distance à la racine. Est aussi utile quand l'arbre peut avoir des branches infinies.

Références

Documents relatifs

[r]

[r]

Application de la priorité aux parenthèses.. Application de la

Un graphe admet une chaîne eulérienne entre x et y si, et seulement si, ce graphe est connexe et que x et y sont ses seuls sommets de degré impair.. Exemple : Le réseau de

Traduire cette égalité par une phrase, en utilisant l’expression « a pour image ».. Traduire cette égalité par une phrase, en utilisant l’expression « a pour

A l’aide de la calculatrice ou d’une représentation graphique à main levée de la fonction in- verse, indiquer les solutions des inéquations suivantes dans R.. 10 Ê 1 x >

[r]

[r]