Cours langages et compilation analyse descendante prédi...

Théorie des langages : Cours langages et compilation analyse descendante prédictiv

Télécharger PDF

LangagesetCompilation

Analysedescendanteprédictive

Intro duction

GrammairesLL(1)

Unefamilledegrammairesanalysablesdefaçonecace.

Caractéristiquesdel'analyseLL(1)• analysedescendante

Constructiondel'arbrede

dérivationselonl'ordrepréxé:

onpartdelaracine(l'axiome)et

ondescendverslesfeuilles(les

terminaux)endéveloppantlen÷ud

interne(unevariable)leplusàgauche. •

analyseprédictive

Pourdévelopp erlen÷ud,onchoisit

larègleàappliquerenprévisualisant

lesymb olecourantdumotanalysé.xc xS X? 2

Intro duction

ExempleS→+SS|∗SS|a

LeschaînesdérivéesdeScommencenttoutesparunterminal

distinct

;Àpartirduterminalcourantdumotanalysé,onsait

déterminerlab onnerègle.+∗a SS→+SSS→∗SSS→a

Analysedumot∗a+aaS S∗ SSS ∗S aS S∗ Sa S+ SSS ∗S aS +S aS S∗ Sa S+ Sa Sa ∗a +a a3 Intro duction

ExempleS→aSbS|ε

Lechoixdevientplusdélicatlorsquelagrammairecomprenddes

ε-pro ductions.Quelcritèredoit-onprendreencomptep ourchoisir

entrelarègleS→aSbSetlarègleS→ε?

Onestamenéàconsidérerlesterminauxquip euventsuivreS.

Conventionpratique,onintro duitunterminalparticulier$p our

marquerlandumotàanalyser.

$etb(maispasa)p euventseretrouveràdroitedeS.

;Onsaitalorsdéterminerlarègleàappliquerauvuduterminal

courant.$ab SS→εS→aSbSS→ε4 Intro duction

ExempleS→aSbS|ε

satabled'analyse$ab SS→εS→aSbSS→ε

Analysedumotab$S Sa Sb SS aS εb SS aS εb Sε ab $5 Intro duction

Conditionp ouruneanalyseLL(1)àchaqueétap e,

p ourlavariableXàdévelopp eretleterminalcourantcenentrée,

lechoixdeladérivationàappliquerdoitêtredéterministe.

Llecturedel'entréedelagaucheversladroite(Lefttorightscanning)

Lconstructiond'unedérivationgauche(Leftderivation)

1symb oledel'entréep ourprédirelab onnerègle

L'analyseLL(1)sebasesurunetablequiindique,p ourlavariable

Xetleterminalc,larèglecorrecteàappliquer.

Pourconstruirecettetabled'analyse,ondétermineaupréalable:

1.lesvariableseaçables

2.lesensemblesPremier

3.lesensemblesSuivant6 Lesvariableseaçables

Unechaîneα∈N∗ estditeeaçablesilemotvidesedérivedeα:α ∗→ε Calculdesvariableseaçables

Onconstruitparrécurrencesuri,l'ensembleEi desvariablesA.E 0

={A∈N:A→ε∈P}E i+1

={A∈N:A→α∈Petα∈E∗ i} ArrêtlorsqueEi+1 =Ei (aub outd'auplus|N|étap es)Exemple    S→XY X→aXb|εY→cZ|Ze Z→dcZ|εE 0

={X,Z}=E1 7

LesensemblesPremier

Soitαunechaînede( Σ∪N) ∗

.Premier(α)estl'ensembledes

terminauxquidébutentleschaînesdérivéesdeα:{ a∈Σ :α∗ →aβoùβ∈(Σ∪N)∗ }

CalculdesensemblesPremier

Pourunterminala:

Premier(aβ) ={a}

PourunevariableX:

Premier(X) =⋃ X→β∈P

Premier(β)

Premier(Xβ)={ Premier(X)siXn'estpaseaçable

Premier(X)∪Premier(β)sinon8 LesensemblesPremierExemple    S→XY X→aXb|εY→cZ|Ze Z→dcZ|ε

CalculdesensemblesPremierp ourlesvariables:

Premier(S)=Premier(XY)S→XY

=Premier(X)∪Premier(Y)Xeaçable

Premier(X)=Premier(aXb)X→aXb|ε={a} Premier(Y)=Premier(cZ)∪Premier(Ze)Y→cZ|Ze

={c}∪Premier(Z)∪{e}Zeaçable

Premier(Z)=Premier(dcZ)Z→dcZ|ε={d} 9

LesensemblesSuivant

SoitXunevariable.Suivant(X)estl'ensembledesterminauxqui

p euventapparaîtreaprèsXdansunedérivation:{ a∈Σ :S∗ →αXaβoùα,β∈(Σ∪N)∗ }i.e. Suivant(X) =⋃ Y→αXβ∈P

Premier(βSuivant(Y))

CalculdesensemblesSuivant

Mettre$dansSuivant(S)(oùSestl'axiome)

PourchaquevariableX,examinerchaquepro ductionY→αXβ

oùXestàdroite:• Siβ6=ε,ajouterlesélémentsdePremier(β)

àSuivant(X)• Siβ∗ →ε,ajouterlesélémentsdeSuivant(Y)

àSuivant(X)10 LesensemblesSuivantExemple    S→XY X→aXb|εY→cZ|Ze Z→dcZ|ε

CalculdesensemblesSuivant:

Suivant(S)contient$

Suivant(X)

S→XY;Premier(YSuivant(S))⊆Suivant(X)

;Premier(Y)⊆Suivant(X)(Ynoneaçable)

X→aXb;b∈Suivant(X)

Suivant(Y)

S→XY;Suivant(S)⊆Suivant(Y)

Suivant(Z)

Y→cZ;Suivant(Y)⊆Suivant(Z)

Y→Ze;e∈Suivant(Z)

Z→dcZ;Suivant(Z)⊆Suivant(Z)11 LesvariablesEaçablesetlesensemblesPremieretSuivantExemple    S→XY X→aXb|εY→cZ|Ze Z→dcZ|ε

Bilandescalculs:

EaçablePremierSuivant

Snona cd e$X ouiab cd eY noncd e$Z ouid$e12 Constructiondelatabled'analyse

Tableàdeuxdimensionsindexéeparlesvariablesetlesterminaux

Pourtoutepro ductionX→α:• AjouterX→αàl'entréeT[X,a]p ourtoutterminaladans

Premier(α)• Siαesteaçable,ajouterX→αdanslacaseT[X,a]p our

toutterminaladansSuivant(X)    S→XYX→aXb|ε Y→cZ|ZeZ→dcZ|ε EaçablePremierSuivant

Snonacde$

Xouiabcde

Ynoncde$Zouid$e $abcde

SS→XYS→XYS→XYS→XY

XX→aXbX→εX→εX→εX→ε

YY→cZY→ZeY→Ze

ZZ→εZ→dcZZ→ε13 GrammaireLL(1)

Dénition

UnegrammaireestLL(1)s'ilexisteauplusunepro ductionpar

entréedanslatable.

Prop osition

UnegrammaireestLL(1)sip ourtoutepairedepro ductions

A→αetA→β,ona:Premier (

αSuivant(A)) ∩Premier( βSuivant(A)) =∅

AinsiunegrammaireneserapasLL(1)s'ilona:• soitunconitPremier/Premier,i.e.,deuxrègles

A→α|βtellesque:Premier(α)∩Premier(β)6=∅• soitunconitPremier/Suivant,i.e.,deuxrèglesA→α|βavecβ ∗

→εtellesque:Premier(α)∩Suivant(A)6=∅14 GrammaireLL(1)Exemple    S→XY X→aXb|εY→cZ|Ze Z→dcZ|ε

estunegrammaireLL(1)

Satabled'analysecomprendauplusunealternativeparcase.

;Lechoixdelarègleàappliquersefaitdefaçondéterministe.$abcde SS→XYS→XYS→XYS→XY

XX→aXbX→εX→εX→εX→ε

YY→cZY→ZeY→Ze

ZZ→εZ→dcZZ→ε15 GrammaireLL(1)Exemple    S→XY|Z X→aXb|εY→bX Z→bZc|c

n'estpasunegrammaireLL(1)

IlexisteunconitPremier/Premierp ourlesrèglesS→XYetS→Z Premier(XY) =Premier(X)∪Premier(Y) ={a,b}Xeaçable

Premier(Z) ={b,c}

;Premier(XY)∩Premier(Z) ={b}6=∅$b··· ···S S→XYS→Z 16

GrammaireLL(1)Exemple {S→aXb X→bX|ε

n'estpasunegrammaireLL(1)

IlexisteunconitPremier/Suivantp ourlesrèglesX→bXetX→ε Premier(bX) ={b}

Suivant(X) ={b}

;Premier(X)∩Suivant(X) ={b}6=∅$b··· ···X X→bXX→ε 17

AnalyseurLL(1)

Pourexaminerunmot,l'analyseurLL(1)utiliselatabled'analyse

précédemmentconstruiteetunepile.

Initialement,lapilecontientlemarqueurdendemot$et

l'axiome.

Latabled'analyse

delagrammaireLL(1)Lapile Lemotanalyséludegaucheàdroitec $$ SS L'arbred'analyse

àconstruire

AnalyseurLL(1) 18

AnalyseurLL(1)

Àchaqueétap e,onexamineleterminalcourantcdumotanalysé

etlesommetdelapile(premiersymb olenontraitédel'arbreen

construction).• Soitlesommetdelapileestunterminala:• sia6=c,

l'analyses'arrêteetretourneÉCHEC• sia=c= $,

l'analyses'arrêteetretourneSUCCéS• sia=c6= $,

aestdépiléetonavancedanslalecturedumotanalysé• SoitlesommetdelapileestunevariableX:• sil'entréeT[X,c]estvide,

l'analyses'arrêteetretourneÉCHEC• sil'entréeT[X,c]contientunerègleX→α,

Xestdépiléetαestempiléenpartantdeladroite

(parexemple,siX→YzT,Testempilé,puisz,puisY).19 AnalyseurLL(1)$abcde SS→XYS→XYS→XYS→XY

XX→aXbX→εX→εX→εX→ε

YY→cZY→ZeY→Ze

ZZ→εZ→dcZZ→ε

MotanalyséPile

abdce$S$S→XYS XY

abdce$XY$X→aXbSX aX bY abdce$aX bY$assortiment20 MotanalyséPile

abdce$XbY$X→εSX aX εb Y

abdce$bY$assortiment

abdce$Y$Y→ZeSX aX εb YZ e

abdce$Ze$Z→dcZSX aX εb YZ dc Ze abdce$dc Z e$assortiment21 MotanalyséPile

abdce$cZ e$assortiment

abdce$Ze$Z→εSX aX εb YZ dc Zε e

abdce$e$assortimentabdce$ $SUCCES

Lecoûtdel'analysedumotestlinéaireenlatailledel'arbre.22 AnalyseurLL(1)$abcde SS→XYS→XYS→XYS→XY

XX→aXbX→εX→εX→εX→ε

YY→cZY→ZeY→Ze

ZZ→εZ→dcZZ→ε

MotanalyséPile

abbab$S$S→XY

abbab$XY$X→aXb

abbab$aX bY$assortiment

abbab$XbY$X→ε

abbab$bY$assortiment

abbab$Y$ECHEC23 RendreunegrammaireLL(1)

Prop osition

Unegrammairenep eutpasêtreLL(1)sielleest:

soitambiguë,

soitrécursivegauche,

soitn'estpasfactoriséeàgauche.

Onp eutmo dierlagrammairep ourtenterdelarendreLL(1)mais

lerésultatn'estpasgaranti.

Prop osition

Ilexistedesgrammairesnonambiguës,nonrécursivesgaucheet

factoriséesàgauchequinesontpasLL(1).24 RendreunegrammaireLL(1)

ParéliminationdelarécursivitégaucheExemple  E→E+T|T T→T∗F|F

F→(E)|nb

n'estpasLL(1)carrécursivegauche

IlexisteunconitPremier/Premierp ourlesrèglesE→E+Tet

E→TàcausedelarécursivitégauchedeE

etunconitPremier/Premierp ourlesrèglesT→T∗FetT→F

àcausedelarécursivitégauchedeT$(nb)+∗ EE→E+T E→TE→E+T E→TT T→T∗FT→F T→T∗FT→F FF→(E)F→nb25 RendreunegrammaireLL(1)

Paréliminationdelarécursivitégauche

SupprimerlarécursivitégaucherendcettegrammaireLL(1)   E→E+T|TT→T∗F|F F→(E)|nb        E→TYY→+TY|ε T→FZ

Z→ ∗FZ|ε

F→(E)|nb26 RendreunegrammaireLL(1)

Paréliminationdelarécursivitégauche        E→TYY→+TY|ε T→FZ

Z→ ∗FZ|ε

F→(E)|nb

EaçablePremierSuivant

Enon(nb$ )

Youi+$ )T non(nb$ ) +

Zoui∗$ ) +

Fnon(nb∗$ ) +$(nb)+∗ EE→TYE→TY

YY→εY→εY→+TY

TT→FZT→FZ

ZZ→εZ→εZ→εZ→∗FZ

FF→(E)F→nb27 RendreunegrammaireLL(1)

ParsubstitutionetfactorisationExemple    E→TR T→id|(E)|AR→+E|ε A→id[E]

n'estpasLL(1)

IlexisteunconitPremier/Premierp ourlesrèglesT→idetT→A $id······ TT→id T→A28 RendreunegrammaireLL(1)

Parsubstitutionetfactorisation

Oneectueunesubstitutionavantdefactoriseràgauche.E→TR T→id|(E)|AR→+E|ε A→id[E]• SubstitutionE→TR T→id|(E)|id[E]R→+E|ε •

FactorisationàgaucheE→TR T→id X|(E)X→[E]|ε R→+E|ε29 RendreunegrammaireLL(1)

Parsubstitutionetfactorisation

OnobtientunegrammaireLL(1)    E→TR

T→id X|(E)X→[E]|ε R→+E|ε

EaçablePremierSuivant

Enonid($ ) ]T nonid($ ) ] +X oui[$ ) ] +

Roui+$ ) ]

$+id()[]

EE→TRE→TR

TT→id XT→(E)

XX→εX→εX→εX→[E]X→ε

RR→εR→+ER→εR→ε30 RendreunegrammaireLL(1)

ourendrel'analysedéterministe

Lagrammairedesinstructionsdebranchementsconditionnels{ I→si E alors I sinon I|si E alors I|aE→b mêmefactorisée  I→si E alors I J|a

J→sinon I|εE→b n'estpasLL(1)carambiguë.I siE balors Isi Eb alorsI aJ εJ sinonI aI siE balors Isi Eb alorsI aJ sinonI aJ εlemotsi balors sib alorsa sinon

aadmetdeuxarbresd'analyse31 RendreunegrammaireLL(1)

ourendrel'analysedéterministe

L'ambiguïtéengendreunconitPremier/Suivantp ourlesrègles

J→sinonIetJ→ε

$sinon······ JJ→ε

J→sinonIJ→ε ···

Aveclaconventionusuelled'asso cier

lesinonaveclesilepluspro che,on

p eutrendrel'analyseurdéterministe

etleforceràpro duirel'arbrevoulu

enprivilégiantlarègleJ→sinon I

audétrimentdelarègleJ→ε.I siE balors Isi Eb alorsI aJ sinonI aJ ε32 AnalyseLL(k)

Généralisationdel'analyseLL(1)avecprévisualisationnonpasjuste

d'unsymb olemaisd'unnombrexékdesymb oles.Unegrammaire

estLL(k)sil'analyseurp eutchoisirdefaçondéterministelarègleà

appliquerenexaminantlesksymb olescourantsdel'entrée.Onnote: •w| k= {

wsiwestdelongueurauplusk

lepréxedelongueurkdewsinon• Premierk (α)={w|k :α∗ →w}• Suivantk (A)={w:∃β,γt.q.S→βAγetw∈Premierk (γ)}

Prop osition

UnegrammaireestLL(k)sip ourtoutepairedepro ductions

A→αetA→β,ona:Premier k( αSuivantk (A)) ∩Premierk (

βSuivantk (A)) =∅33 AnalyseLL(k)Exemple {S→abX|ε X→Saa|b

n'estpasunegrammaireLL(1)

EaçablePremierSuivantSouia$a X

nona b$a

ConitPremier/Suivant:Premier(abX)∩Suivant(S)6=∅$ab SS→εS→abX S→ε

XX→SaaX→b34 AnalyseLL(k){ S→abX|εX→Saa|b estunegrammaireLL(2)

EaçablePremier2 Suivant2 Souiab$aa

Xnonaa ab b$aa

Enprévisualisantdeuxlettres,iln'yaplusdeconit:Premier 2

(abX)∩Suivant2 (S) =∅$aaabb SS→εS→εS→abX

XX→SaaX→SaaX→b35 AnalyseLL(k)$aaabb SS→εS→εS→abX

XX→SaaX→SaaX→b

MotanalyséPile

abaa$S$S→abXabaa$ abX$assortimentabaa$ bX$assortiment

abaa$X$X→Saa

abaa$Saa$S→ε

abaa$aa$assortimentabaa$ a$assortiment

abaa$$SUCCES36 AnalyseLL(k)Fait Ilexistedesgrammairesniambiguës,nirécursivesgauchequine

sontLL(k)p ouraucunk.Exemple  S→A|B A→aAb|c

B→aBbb|da k

∈Premierk (A)∩Premierk (B)p ourtoutk

;ConitPremier/Premierp ourtoutkExemple {

S→aSb|bSa|εPremier k

(aSb)∩Suivantk (S) ={a}{a,b}k−2 {b}p ourtoutk

;ConitPremier/Suivantp ourtoutk37 AnalysesyntaxiqueavecANTLR

ANTLR4meten÷uvreuneanalysedescendanteprédictivequia

lescaractéristiquessuivantes• factorisationàgauchedelagrammaireautomatique• suppressionautomatiquedesrécursivitésgauchesimmédiates

(maispasdesrécursivitésgauchesindirectes,e.g.

A→Bα,B→Aβ)• résolutiondecertainesambiguïtés• enjouantsurl'ordredespro ductionsp ourlevercellesliéesaux

prioritésdesop érateurs• p ourlesambiguïtésduesàl'asso ciativité,pardéfaut

l'asso ciations'eectueàgaucheoudefaçonexpliciteàdroite,

e.g.l'exp onentielle,expr:expr′ ∧′ 〈assoc=right〉expr• basésurunestratégieLL(k)• enrichid'unmécanismeadditionnelquip ermetdetraiterplus

quelesgrammairesLL(k)maisquiinduitalorsunsurcoûtentemps 38

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2