CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6) tokens. ff-L (6) (=>Correcto...

14
I TEMA 4: ANALlSIS I SINl"I\C1\ CO. lEMA Cf •- As:pectos 3ellerales :3 o.lsor;i:mos. lEMA 5. - A. S. Asc.endente : a.Jaontrno LR precedencia.. de. lEMA 6 .- A. S. Descendente. : rec.ursivo lj. LL (o bo.sadc en tAblas). . . / 1. INTRODUCCION. El I!S el motor del c.ompi/a.dor : va recibiendo los tokeJ\s del 0. . lé1.ic.o cuando termina de trato.r un token I entonces pide el al Resto del COtnri Indor .,.s A. Hco ÁR.BOL si c1'¡c.o ....... -'W"'- ..... A. Prosra.ma.. Fuente (PF) 8 obJehvo de este modulo es COl""T'ecto en guncioó de la. sinta.xis del . determina.r si el prosrama guente es ¡ es decir ¡ c.cmprue.ba si el P¡: Petra. deg inir .' 0. . sin1aiis · ·del utilil.o r'lUla. 80rmae , determinista.. de la mismo. . Esto. deginidón se bace a No.vés de uno, Si e.\ PF Se puede 3enero.r mediante dicha. serc{ correcto i en ros o ccotrQ.t1·O it\co rrecto. La. en el a. siniC{dico debe ser ele Tipo 2. (independientes de con te.do), " Produccicl)es A oC / AE N o< E. (NUT)-k Cristina Bueno F. (2010) 53/290 Tema 4: Análisis sintáctico 1/14

Transcript of CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6) tokens. ff-L (6) (=>Correcto...

Page 1: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

I • •

TEMA 4 : ANALlSIS• I •

SINl"I\C1\ CO.

lEMA Cf • - As:pectos 3ellerales :3 o.lsor;i:mos.

lEMA 5. - A. S. Asc.endente : a.Jaontrno LR ~ precedencia..

de . ope.ro~~~ _ ~ --", ::.I _

lEMA 6 .- A. S. Descendente. : rec.ursivo lj. LL (o bo.sadc

en tAblas).

. . /

1 . INTRODUCCION.

El o.n(lü~ador· sintó:cti~o I!S el motor del c.ompi/a.dor : va recibiendo los

tokeJ\s del 0. . lé1.ic.o~

cuando termina de trato.r un token I entonces pide el

s.¡~l.liente al ~. 'é~ic.o.

Resto delCOtnri Indor

.,.s

A. Sintdc:-I-----~Hco ÁR.BOL

si"'~c1'¡c.o .......-'W"'-.....

A . lé~icoProsra.ma..Fuente (PF)

8 obJehvo de este modulo es

COl""T'ecto en guncioó de la. sinta.xis del

e.~ CCI'"~ sint~cn'Mente .

determina.r si el prosrama guente es

len8u~e ¡ es decir ¡ c.cmprue.ba s i el P¡:

Petra. deginir .'0. . sin1aiis · ·del 'e~ua.je.~ utilil.o r'lUla. de8inj (j()~ ' 80rmae ~ ,determinista.. de la mismo. . Esto. deginidón se bace a No.vés de uno, ~rClmá.hc.o. .

Si e.\ PF Se puede 3enero.r mediante dicha. ~ra.mdh(Cl. . serc{ correcto i en roso

ccotrQ.t1·O ~rci: it\co rrecto.

La. 3rQ.rn~tíc.a. utilj~da en el a. siniC{dico debe ser ele

Tipo 2. (independientes de con te.do),

"Produccicl)es ~ A ~ oC / AE N

o< E. (NUT)-k

Cristina Bueno F. (2010) 53/290

Tema 4: Análisis sintáctico 1/14

Page 2: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

Secceocro,{

€ L(6) <=>

tokens

. ff- L (6) (=>

Correcto

Incorrecto

n.rbol de deri vación ~el

trcwés de las re~1 as

tol.cen~ Q.no.!.ii,C\da.. Si esto

~ a

de

~ no se 8enero..

sesuif" a.no.li~Q..fIdo el rest,e del proaro.rna

~a. no se caeneraro: l\ ins\Án cóclica-0'

de tokens' pertenece. cU len<Jvll.Je w~nerac:lo

co'diao correspondiente o la sentet\.cLa.

adecu'C\.do o. la situación

pero

de la 8ro.rncí.tica.

he¿ja.s la. secuencio

-erroreS,

se ~enera el erro r

sentencia . Es posible

busca.r maseso.

po r he..ndo de.! o..:-..tOfllo. ¡ni cial

t proeluccicnes J obtenao en lo..s

se c..cnsisut. se dice ~e lo secu.eoero,

por lo, ara.mcilico. I pudiendo ~enera.r el

~ caso contrnri o ,

El resulbxdc ~ue dehe devolver el a. sintO:ctico como cense cue.o ciC\ del

aoó'Lisis de uno, sec..u.~cia es 4d ÁRSOL siNTÁCTico correspondieote . Se trQ.tn de

""na secuencio. de derivo.e.tones ~ue nos Uevo.n o. obtener lo secuencia qe. tokens

orvo,Lt l;.Oda. .

. Por to.nto, anoláo.r sinltÍcticoMente \.LOa secuencia de +ol.ceos ccnscste en

enc.onho..r pa.ro. d.ic......o secueocic, un drbcl s¡"tO:dico o

el cócU'So de

Suente. po.ro..

lo. COO'lpleJidClcl de cae.nerar el a:rbol de 1.V\0. senteilcin. de. n tol.cens

es O (n l) . Es muy costoso po~ue tenernos en cuenla. Q'tí< lo ~ro.mc\;hca puede

ser cua\<:\werC\. de bpo 2 . Por eüo , lo <:fue se. hace €S e1eSir u.n su.b cc~\.1.f\to de.

es-te tipo de ~ro.rnc\.hCClS de mo..nera ~ p0da..mos enConvo..r proceclimientos ~\..I.e

Claili~a.n lo. sen(!JC\.cio'o del d.rbd I o\oteniendo o.sí una complejidod menor o.. ~

o..nterior.

'It "Tipos DE MÉ"TODOS PARA GENERAR LOS A . siNTÁCTicos :

- UNiVERSALES ~ Vc:{lidos raro. cucJ~uie.r tipo de ~ra.mc{tic..a.. de ccntew-to

G1.re . Complejidad O ( 1'1 3) .

- DE.SCEÑOE.ÑiES .

(el. i~ui8rdQS)

6romó.+ica. L.l..

( "Top - down) COllSbyen el drbol pcuhel\do del alliomo..

de la. 3ra.mático.. ~ a.plicando re~las pa.ro.. ~nerClr (las

h~as, ~ ser~ la. secuencia. de tokenS'.

Aplican derivació" (siempre derlvnción el. la i ~~uierda.) .

- AseENl>Et-lTES ~

(a. derechas)

Gro.Mcilica. ~ .

( Bottom - up) Ccnstev)'en el a:rbd partie.ndo de las 'nojo!> '} a.f'li(.o.ndo

las resl4S de producció.... hosb \Iesar al nll.ioma. de la ~rQfll~tica .

ApliCQII reducciof. _ despicaamiento , no denvo..cio....es por ~a elerecaa .

Cristina Bueno F. (2010) 54/290

Tema 4: Análisis sintáctico 2/14

Page 3: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

los o . s.nt á.dicos ClScen<:ieo1es ~ de.scendeJl~es ~cn md s seno'os ~u~ los.

UtlIVe.rsuJes . .Imponen c.ierto.s coodiclcoel; SOb re la ~r"Q.m~bc~ I ,,\ue ..:e puede. adapt:a.r

si" vCl..l-ia.r el len3uoJe .

• REPRESr.t.I1'AÓÓÑ DEL ÁRBOL SIÑTÁC.íi ro :

- ESTRUC.TURA J'f.RÁR~uic.A I donde cado. nodo I:etIdrá. sus. desc.endentes . El probletnC\

de este, nota~éo es ~U~ no Impone ninaLtn orden

crono lógico de n.pl¡ca.cior, de bs rc:~IC1S .

- SECUEÑciA DE NÚMe.¡OS "Jue representan el orden de aplicacioó de las reslas o,

par fir del a"¡ oma pora. obtener el ¿rbol correspondiente

a. la secueoeio de tokens .

, . -2 . ANAl\SIS SiNTÁCl"i CO DESCENDEN1E.

Un . 1 a.na:Üsis a i ~g\lÍerdas; " paro. una rodeno terminae T es la. lista de n¡[meros

ele la s re~las de denlloción o. i ~~uierdas ( reslC1S de produ cción) uli~i.adas p<lra ~en~a.r

T o, r ar-hl'" del ox icmc, S de. la. 8ram~+ica. .

U/\a derillO.ción el. i ~~ulerdas cons·,ste en a.p1icnr ",na. r~'Q de .prod u cció n aJ

símbolo s.tun.do más a. la i 'l.~uierda..

Un a.nc(üs~ sintá.dico de~dente de Una. sentencia. consiste en

t ra tar de encontrur I.lt\ ~lisi!. a i~~uie.rda.s pnm ~a ca de na

qe .. entrad..a. .

Si dada. \.loa. 3ra.rnn~ca I 0.1 a.plica.r las re~las (producciones) obteJI80 uno,

sentencio. ~ al .vol~r eL upIicnr IClS re3\o.s. en dis.tinto orden obtenso ea. misma ~entencia.;

eo tonces ~ algo rncJ e n la s ramá.+ica. . Para 'fIe eJ compilador J..ulciooe ccrredQ./Oen+e

es necescric ase~l.'ra.r ~Lle. pa m cada. cadena. de eobnda.. .se obtiene o..V\a ÓNi CA

CiaU({.a. . Se. neces; tu. U.f\a grn.mó..-hCA (autómato..) determinista. por5f-e. al ir a.J\aLleo..ndo Qu

se ntencia. se l/el" reaLieOlldo to.lnbten otras opere.c ie nes ( a cciones !iemc{n+ic.as, ~eneraúo¡'

de c.óctiac I . . • )

Cristina Bueno F. (2010) 55/290

Tema 4: Análisis sintáctico 3/14

Page 4: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

E'em lo ", A"á.li~is descendeo~.

bramó.bcn tipo 2 :

N={E/T,F}

T :: { + , * I ( ¡ ) I iel }

P ;{E~E+T 1

E""'" 2-

i~"ltF a

.. ~ F li

&=~(E) sF ..., ¡el b

}Sentencia- a. o.oo.Lii.~r ·, ieL'" ( Id + id.)

E.

12.T

Esta, wnm~ \lea. respe.to.. .

(obliSo. o. 'fle s e c.lolmpi0..) ea..prece denc io ,( priorida.d) de eosoperadores arÍ"tmenco~ .

/I~T .. F

14 /1~5F ( f )

I ~ /1\ 1Id. E -t- ..

I2. I Lt

E\eSlf'Y\O& p~-l_~. • -----.<>c:nVQj" se Inpre

e.1 s{""bolo de.

lo. j~ !tuierdQ.

T

I L¡

F

lbid

F

¡el

ANÁLisis DESCENDENTE

(o. i ~~uierdQ.s)

Orden de. aelic.acio~ :

23 e:, c.; 512'1 " L¡~.

t--.#".~---...~

AI\ei.Usis descendente :

del Ql(lotno.. e, la.s hoi QS .

J , . '

Cristina Bueno F. (2010) 56/290

Tema 4: Análisis sintáctico 4/14

Page 5: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

• Produc:c.;one.s. de la ~ramá.i\c(\ : E -? T + "T

T ~ E

T ~ iel

• S entencÁa. ', a. + b ;. e

Pri mera Sarilla :

,S~u.nda Jo(",el :

1 4 3 2- ~

E ==) T+T =) iel + T => ieL 1- E => id. + T 11 T '=.)

id + id. " T =) Id. + id. JI id.t¡

2. 3 1 4 l.¡

E => T "'T =) E.. T => T +T "T => id. T T .. "T = ;>

id. T id.. ... T => ¡el + iel .,. i el~

Lo. wnmá.-tlca es ambis,¡(\ porQUe las dos Jbr mas \lQ\idQ.o la. sentenda..

El ccmp·,lo.dor no acepta esto. a m biaüedn cl .

Nec.es;ta.rnos u.n proceso de.ter minista. . Pa ra ello:

- Uhlit-amos I.\.M 8ramá.~ca no ambiaua.

- Ha cer ~ue el anali~a.dor sea determi nis ta. . Por EO'emplo, hac.er Ci:lue

siempre. has a derivaciones o. i'l. <'¡l.li erdas (~ue siempre. COjo. el

no termina.! más a. la i~uierda..) . A veces. esto, SlOlución nO b(\~Ja .

No pedemos tener 1.1.0(\ ~ro.mñ.ficn reC\lrSIIIQ po r la i~~uierdo. .

'em l e : ReciU"s;vidad por In i~uierda .

Sentencla: w" a.b

S =) 5b = ) Sbb - > ... =) S bbb..b

Como .!>ie.mfre lIa.. ma.s eJi:¡}iendo el pnroer no terminae por ea. i"i.flwerda.,

Ilecaariamos. a. u na. sduacióo de bucle i n8i ndo ~ nO se podría a ec.ani.ar nunco,

\0. 'i~do.Uó l'l de la. se ntenc.iQ..

".

\-Io.bn:A. ~ue e.Iimil'lClr lo. rec"rs;vidad PO'" lo. it:c;¡uierdA. o hc cer \Ul

l\J)c{lisi!> ClScendente .

Cristina Bueno F. (2010) 57/290

Tema 4: Análisis sintáctico 5/14

Page 6: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

· .úRAMA"TICA l.L \ Con este tipo de 3rcuná:hca. puedo ccos-truir un o..naU ~QdOf

sOntetetico descendente ~ue Q.nC\l!'tCl IQ cadeno. de entrQclQ. de i~~erdQ a derecha. 'ir

produce \.ltl Cl1\~Lisis ' a i't.~ierdas correcto . po.ro. did'lQ cQdeOQ. de entro. da. .

; . • • I •

3. ANALlSIS S\NTACTICD ASCENDEN"TE.

U I "

Un o.no..üsis a. derechQS PQro UnQ cadenCl term',nat T es ~ ~isto. deI

de la,s; re~las de derivación derecha en orden inl/erso u+lLi~o.da paru.

ea cadeJ'la T o. partir del o xiomo S de la. 3ra.má.tica .

Una derivacicn derecho. consis.te en aplico.r u..nQ l'e$j\Q de Froduc.uén 0..\

sjmbolo situado rncí.s a. ea. derechc .

Un a.nclüsi!> sintC{dico Q.~l\denh~ de ...na secuencio ocnsiste, en

hal:o.r de encontrar un Clná.üsis a derechas (a:rbol a derechQS)

pnrQ. la rodeno. de entrad.a

Anó'üsis eucendente :

E

/1~1E + T

12. /1\3T T .. F

Iy14 I ~

F f= .'eL

1, l'¡ei id.

Orden de a.piieacío,; ~

G li 2 b 4 <;; 3 1

derec1\0. 1 del

hojQ.s e il\lleÑ ir

la. lista.. . ~

~

Sentenua.: id + id..¡, id

e.\ arden de

derillo.r pOr lo.

Q.xiolYlo. e, las

E'em lo: Aná.lisis ascendente.

G Ji! (N I ,.. PI E)

p:: { E ...., ETT 1

E ~ T 2

T ~ T'IoF aT ~ F q

F ~ ( E ) 5

F ~ iet. e

}

Cristina Bueno F. (2010) 58/290

Tema 4: Análisis sintáctico 6/14

Page 7: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

' .' 1'" .'

. . ,, ' . . . "

ParQ. comprobar le. cc¡r,-ecc.ión del an~U!.is asceodente anterior hacemos -el

.. o..nó-lisi::. CA der-ec.has ~escenC!ente n y , b ,ene. "Iue soLir el , m IS m o ,-esi.Jtado, pero en

orde.l\ in\le(so .

1 3 '" E +@ ...l.¡

-} E+ => E+T • F => id.. =)

"""'---" -...J

E +\É}1Ie; 2. <¡

iet. =) ~ T id. ... id. => + id. lo id =)

'-' ~ ......,

F " id..t; ¡d i id,• ieL ..) id. +-

'-"

Orden de aplicacíc'n : 1 3 6 't 6 2 q G

(;;\ orden de aplícacic~ es ;"verso => El ' o..nc{lisis, ' ascendente obtenido

es correcto.

, . ,. , .6R.~Mt\T\CA LR :. Se et:t-raeterÜ.a. por~ . pe~mae . crear UJ\ OJ'IQ.li~Qdor

Sintó..c.+ico . Q.Scenclente ario.li'i:ando " lo: Ct\dena de entradQ. de i~c;:ruierdo.. a derecoo I

produe.Íe.ndo \.lO an~üs¡s¡ o. derechQS.

p' r

I • •

4. ANALISIS DESCEI'JDENl"E CON RETROCESO.

El rebrocese de este cJaorítrno sirve pa.ra hacer determinista lo.

~Jl"amcltic.Cl . E~te mé +odo Sv.nciona para t:oda. ~rorná..4ica. de. tipo 2 (de

contell.to Libre) no rec'-I.rsivo. por la i'i:~ujerdq" pues s; lo Juera f'od..r ía entrcU"

en UJ\ bucle ¡nsin;t o.

Este aJaoritmo no es eg1ciente a. causa del retroceso I por lo ~ue 00

se suele uhÜ~ar pa.ra constrU-ir c«opi Ia dores.

-..

Cristina Bueno F. (2010) 59/290

Tema 4: Análisis sintáctico 7/14

Page 8: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

PARSE = ANÁUsiS RESULTANTE = SECU~cil\ DE U\S RE~LAS APUCAOAS .~

ANALIZADOR SINTÁCflCO DESCENDENTE CON RETROCESO

Algoritmo:

Entrada: Gramática de contexto libre no recursiva por la izquierdaCadena de entrada; MFa¡ , a2,... an , ~o .

Salida: Un arse a' uierdas w si existe; en otro caso, error

frocedimiento:1. Ordenar y numerar todas y cada una de las reglas de la gramática2. Comenzar la generación del árbol con el axioma de la gramática, Éste será el nodo activo,

inicialmenteEjecutar:

a. Si el nodo activo es un no terminal A ;

• Escoger la primera alternativa para A Ycrear sus descendientes• Hacer el de más a la izquierda el nodo activo• Si A no tiene más descendientes, hacer como nodo activo el siguiente a la

derecha deAb. Si el nodo activo es un terminal a:

• Comparar el token de entrada con aSi son iguales, el nodo activo será el siguiente a lad~.ha'dee /Si no lo son, regresar al nodo donde se aplicó la regla anteriorpreviamente, y tratar la siguiente alternativa (otra derivaciónj x (RetroceSo)

• Si no hay más alternativas, volver al nodo anterior y seguir así )1,

Hasta llegar al final de w (si no se puede llegar a construir el árbol, error)3. El parse será la secuencia de los números de las reglas utilizadas-

E 'e rn lo: AI~oritmo de ana'.Lisi~ descendiente con rehoceso .

G :; ( NI T I P I lIpo) vJ = arra.y [ nU.M .. OIlM J oS c.ha.r

P : 1 Tipo ~ S'I/'nple

2- '-;po ~ cura::i [ Sil\'lple] aS Tipo3 SimpJe ~ tnteaer

9 S imple ~ ehar

5 Simple 4 nu.m .. nl.LM

v-npo~

t)/:i5'~ Q~~ ; J(í~~in~et" cho.r nUM..oum int ese.l' c.ha..r num .,nu.m

X X X X X V

Parse =- 251 q-Aná.Qisis o-

i~~ui erdQ/) o 'btenido.

Cristina Bueno F. (2010) 60/290

Tema 4: Análisis sintáctico 8/14

Page 9: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

I • •

5. ANALlSIS ASCENDENTE CON RE1"ROCESO.

Este método .g""l\ciona pa.ra. ~ram~t cas Sin ci clos ~ si" reSlas >. (excep ­

tuo.ndo I a veces, \~ re~\as del "Xiorna) .

C.1C.I.O : A ~ A _ Jo---, Vuelvo a ob lener el

serie de der;va.c.iones.

símbolo no termioa..\ A h a s uno,

.' , Este a.\a0ritrno no se utiLi~ .

En aene rae I lo!. alaoribnos Con retroceso oc son "ia.loles.

ANALIZADOR ASCENDENTE CON RETROCESO

I oritmo:

DUCCIÓN.,DESPLAZAMIENTO

.'

Entrad~: Gramática de contexto libre sin reglas A. y sin ciclosCadena de entrada: .w=a;l, a2,... a¿ n~1Las reglas de la gramática están "itumeradas . r ,

Salida: Un parse a derechas para w, si existe; en otro caso, error

"

1 ,

Procedimiento:l. Se considera que la cadena a analizar se encuentra en una pila de entrada2. Explorar la cabeza de la pila de trabajo

a. Comprobar si hay un lado derecho de alguna regla que pueda equipararse con lossímbolos de la cabeza• Si es así:

~ Hacer una reducción , esto es, reemplazar estos símbolos por el lado izquierdo de laproducción

~ Si puede hacerse más de una reducción, éstas estarán ordenadas de algunaforma para determinar cuál aplicar primero

• Si no es posible la reducción :~ Desplazar el siguiente token a la pila de trabajo y volver al paso 2 eL

b. Si se llega al final de la cadena w y no ha sido posible una reducción , retroceder hasta rel último movimiento en el cual se hizo una reducción. Si hay otra reducción posibleen este punto, hacerla y volver al paso 2. Si no la hay, seguir retrocediendo

c. Sí se llega a un punto en que no se puede seguir avanzando, errord. Si se ha leído toda la cadena w y en la pila de trabajo sólo está el axioma, entonces el

parse será la secuencia de los números de las reglas utilizadas en las reducciones

piLA

I>EEIIITR .

~"

piLADETRAB.

.!¡-/

Cristina Bueno F. (2010) 61/290

Tema 4: Análisis sintáctico 9/14

Page 10: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

E -e o:

P : 1 E ~ E +T

Z E ~ T

.3 T ~ T .... F

(¡ T ~ F

5 F ~ ( E ), F ~ id

Po la de +rnb o:

Se escose r3 ror"~ve es ~

primera de ltU. ~ue se pueden

~r\¡CDJ' ·

d ~ r~ rZ d, d. r d d d rlO re¡ r2 d.l( i) ~

~ ,-F\ , - ,,i~_ I , :T:'- - 1 ,e + ' I tOS\... ' ... 1

(~,.-.. , I \

X X X ... - "',E E E :E: E lE:\ J: 1 \~ .... E,.

O <O,-' \ - ' I I , -,

( ( ( ( ( ( ( ( ( 1 ( I I f 'I ,

'-' I I0 * 0 '" '" .. + .. .. ,. .. ~ .. ,. I w 'I I

~. "F"" .;:" E E E i T T T T T T T T T ,. T T \T' T f _\ ' _/ .. -' -- ', \:/, d re; rL¡ r1 d. r5 ra r2 FIN +i===

lnicia.l mentel/~tÍC1 ---.

® PO r" este ~mino "eso a..l Jinal de la secllenc.iQ. ~ no ob+en80 .solucion "ñe¡ek

(n u.n ca encoovaré E .. en una. pa rle derecha) . fb r ello retrocedo ~stéC -IQ.- ­

rechlce.ión r Z,

Despl(l'ioo pO~l.Ie ()() hay nlOSLlna reducc:.ioÍ'l posi ble, e Ácep+o r2 I c:¡ue 'lo. he.mos vis \ 0

~ue no conduce Q. la solucion.

Pa rse. (a.ná.Li s i s a. derechos obte.nido) " lO 4 b q 2 C; i¡ 1 5 3 2 .

Cristina Bueno F. (2010) 62/290

Tema 4: Análisis sintáctico 10/14

Page 11: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

E"ero lo: Alsorit mo de an~lisis

P: 1 E -') E ... T

2 E ~ T

3 T ~ T .. F

L¡ T ...., F

5 F ~ ( E )

b F ~ id.

o.sce ncient e ceo retrecese (Redu , cióo - Desplo'i,a.mie.o\o).

Pila de. tra. o :

Se escoae- -s por~ es lo.

primera de la.s !fe se pueden ap~car "

~

tiempo=,.(6 r3 rz FI Nel "6 r'l r2 r eL d.

JC x · JI t (j)

retrocede hllSto. r2

d.~ r4 r 2.X

el.

-\JA X X x

" X Xe

~~r»: ,,-

t~,-,

I ' E. 'F '' F' ,1"'I ,,_, , '~" I IA 0 • ... -t- G> • l . :..... 't 1 I

~,--\ -~ , I --,,I F, 'TI E E E E E E T T 'T 'TI ,:t' E

~- ' '--' '- ' ' _1 ...7'

@ Desplato porc;¡ue 00 ha~ oin~una red ucción ('os i b\e I uc.epto r 2. 1 C4ue ~Q. hemos

v i5.to ~ no co nduce ~ la soluciono

Pa.rse ( QI\~li s¡~ a derechas obtenid o) = 6 Lf G .3 2-

Cristina Bueno F. (2010) 63/290

Tema 4: Análisis sintáctico 11/14

Page 12: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

·' l '

i -,

Cristina Bueno F. (2010) 64/290

Tema 4: Análisis sintáctico 12/14

Page 13: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

ANALIZADOR AsCENDENTE CON RETROCESO (REDUCCIÓN-DESPLAZAMIENTO)

Algoritmo:

Entrada: Gramática de contexto libre sin reglas A. y sin ciclosCadena de entrada: w=a¡, a2,... an , ~1Las reglas de la gramática están numeradas

Salida: Unparsea derechas para w, si existe; en otro caso, error

Procedimiento:1. Se considera que la cadena a analizar se encuentra en una pila de entrada2. Explorar la cabeza de la pila de trabajo

a. Comprobar si hay un lado derecho de alguna regla que pueda equipararse con lossímbolos de la cabeza• Si es así:

o Hacer una reducción, esto es, reemplazar estos 'símbolos por el lado izquierdode la producción

o Si puede hacerse más de una reducción, éstas estarán 'ordenadas de algunaforma para determinar cuál aplicar primero

• Si no es posible la reducción: .o Desplazar el siguiente token a la pila de trabajo y volver al paso 2

b. Si se llega al :final de la cadena w y no ha sido posible una reducción, retroceder hastael último movimiento-en el cual se hizo una reducción. Si hay otra reducción posibleen este punto; hacerla y volver.al paso 2. Si no la hay, seguir retrocediendo .

c. Si se llega a un punto enque no se puede seguir avanzando, error .d. Si se ha leído toda la cadena w y en la pila de trabajo sólo está e.l axioma, entonces el

parse será la secuencia de los números de las reglas utilizadas en las reducciones

Cristina Bueno F. (2010) 65/290

Tema 4: Análisis sintáctico 13/14

Page 14: CO. :3 a.Jaontrno¡lisis_sintáctico.pdf · Secceocro, {€ L(6)  tokens. ff-L (6) (=>Correcto Incorrecto n.rbol de derivación ~el trcwés de las re~1as tol.cen~ Q.no.!.ii,C\da..

ANALIZADOR SINTÁCflCO DESCENDENTE CON RETROCESO

Algoritmo:

Entrad~ Gramática de contexto libre -no recursiva por la izquierdaCadena de entrada: w=al, a2,... an, 1120

Salida: Un parse a izquierdas para w, si existe; en otro caso, error

Procedimiento:l. Ordenar y numerar todas y cada una de las reglas de la gramática2. Comenzar la generación del árbol con el axioma de la gramática. Éste será el nodo activo,

inicialmenteEjecutar:

a. Si el nodo activo es un no terminal A:• Escoger la primeraalternativa para A Ycrear sus descendientes• Hacer el de más a la izquierda el nodo activo• Si A no tiene más descendientes, hacer como nodo activo el siguiente a la

derecha deAb. Si el nodo activo es un terminal o:

• Comparar el token de entrada con oSi son iguales, el nodo activo será el siguiente a la derecha de aSi no "lo son, regresar al nodo donde se aplicó . la regla anteriorpreviamente, y tratar la siguiente alternativa (otra derivación)

• Si no hay más alternativas, volver al nodo anterior y seguir asíHasta llegar al final de w (si no se puede llegar a construir el árbol, error)

3. El parse será la secuencia de los números de las reglas utilizadas

Cristina Bueno F. (2010) 66/290

Tema 4: Análisis sintáctico 14/14