Análisis LR() Conlictos LR(): introucción Cuano al construir la tala análisis LR() scrita n los puntos antriors no s pu consguir qu sa trminista (porqu n alguna casilla hay más una ión) irmos qu la gramática no s LR() n caso contrario irmos qu la gramática s LR(). La xistncia l no trminismo s llama conlicto Los conlictos pun sr los siguints tipos Conlictos rucción / splazaminto: n stos casos las ions la casilla son stos os tipos Como jmplo rcuérs l caso l último jrcicio Conlictos rucción / rucción: n stos casos las ions son rucción l conlicto consist n no por trminar cuál las rglas rucir Análisis LR() Conlictos LR(): posil solución conlictos Como s ha mncionao prviamnt, la xistncia conlictos implica la no prtnncia la gramática al grupo las LR() Sin margo, no s iícil, n algunos casos, imaginar una solución al prolma. Analizarmos l conlicto l jmplo: aunqu s pu ncontrar un árol rivación la cana, l inicao planta la ua ntr rucir o splazar Rucción <loqu> <cs> <jcs> <jcs> splazaminto gin c jc jc n Análisis LR() Conlictos LR(): posil solución conlictos Sin margo, no s complicao comproar qu la rucción imposiilitaría l corrcto análisis la cana ya qu a <jcs> sólo pu sguirl n, rucir oligaría a qu l trminal qu siga a <jcs> us y, sgún la gramática so s imposil. Por tanto, ralmnt, la única opción posil s l splazaminto <loqu> splazaminto Análisis SLR() Introucción l análisis SLR() sa una vrsión mjoraa l análisis LR() qu Compart la técnica cración staos y, por tanto: mpla l mismo algoritmo para la opración cirr mpla l mismo algoritmo para la opración ir_a Utiliza la tala análisis para tratar las ntraas la misma manra Rllna las opracions splazaminto la misma manra Pro tin n cunta qu las ruccions sólo s prouzcan n prsncia los trminals qu pun sguir al no trminal la part izquira la rgla rucia <cs> <jcs> <jcs> gin c jc jc n
Análisis SLR() Análisis SLR() Construcción talas análisis SLR(): métoo Construcción talas análisis SLR(): métoo S irnciará ntr la part la tala qu inica splazamintos y la qu inica ruccions: splazamintos la tala: s igual qu LR() S otinn lyno las transicions l autómata. s cir, si n l autómata s transita l stao s i al s j miant l símolo (trminal o no) X, ntoncs s aña a la casilla la ión j Si X Σ T Tala _sintáctica[i,x]= j Si X Ruccions la tala: n las casillas a caa uno los staos con coniguracions rucción (por tanto contnrá una coniguración l tipo A γ γ ) hay qu añair la rucción la rgla A γ sólo n las columnas corrsponints a los trminals qu puan sguir al no trminal la part izquira la rgla (A). Por lo tanto st paso s irnt al LR() Acptación: s igual qu LR() Si un stao s i transita con l trminal al stao qu contnga la coniguración rucción la rgla añaia axioma axioma hay qu añair a Tala _sintáctica[i,]la ión acptar s posil qu l alumno ncuntr n alguna unt iliográica la acptación la cana por part l analizaor con otros rcursos técnicos qu no mncionarmos xplícitamnt n st curso. rror: s igual qu LR() Toas las más casillas tinn asociaa la ión rror Lo más rcunt s jar sas casillas n lanco orma qu s lo mismo ncontrar una casilla n lanco qu jcutar la ión rror Análisis SLR() Análisis SLR() Construcción talas análisis SLR(): jmplo A continuación s mustra la tala análisis para l jrcicio qu s stá solucionano s ácil comproar qu s cumpl, n la gramática: () () () () () () siguints() = {} siguints()= {} siguints()= {} r r Construcción talas análisis SLR(): jrcicio Comproar la corrcción la tala analizano con lla las siguints ntraas (ignor los saltos lína y los lancos): Corrcta: gin c jc jc n Incorrcta: gin c jc n r r
Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r
Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r
Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r
Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r
Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r Análisis SLR() : jrcicio () () () () () () r r r r
Análisis SLR() : jrcicio Análisis SLR() Concptos Cuano al construir la tala análisis SLR() scrita n los puntos antriors no s pu consguir qu sa trminista (porqu n alguna casilla hay más una ión) irmos qu la gramática no s SLR() n caso contrario irmos qu la gramática s SLR(). r r r r () () () () () () Otros algoritmos análisis jrcicio introuctorio Construya la tala análisis SLR() la siguint gramática qu gnra l lnguaj {x, a n x n n } ()S A ()S x ()A aa ()A () x Lo primro s aumntar la gramática ()S S ()S A ()S x ()A aa ()A () x Otros algoritmos análisis jrcicio introuctorio Calculamos l iagrama transicions ntr staos l autómata SLR() ()S S ()S A ()S x ()A aa ()A () x
Otros algoritmos análisis Otros algoritmos análisis jrcicio introuctorio Introucción Y la tala análisis SLR() ()S S ()S A ()S x ()A aa ()A () x a s s r r/s x s s r r r r S A Hay gramáticas intrsants para los lnguajs programación alto nivl qu no son SLR() n stos casos s pu utilizar algoritmos más potnts Pomos mncionar, por jmplo LR(k),, k LALR() r r Otros algoritmos análisis jmplo Construya la tala análisis SLR() la siguint gramática (amigua) qu gnra xprsions aritméticas () + () * () i Lo primro s aumntar la gramática () () + () * () i Otros algoritmos análisis jmplo Calculamos l iagrama transicions ntr staos l autómata SLR() () () + () * () i
Y la tala análisis SLR() () () + () * () i Otros algoritmos análisis jmplo * s + s i s s s Otros algoritmos análisis jmplo: posils solucions Si l alumno rlxiona, l prolma stá originao por la amigüa ( i+i*i=(i+i)*i? o i+i*i=i+(i*i)?) n st caso una posil solución s orzar una cisión n las casillas conlictivas. Hay qu tnr n cunta la manra n la qu acta a la asignación priorias las irnts altrnativas. l alumno pu comproar: r/s r/s r r/s r/s r La gramática no s SLR() Otros algoritmos análisis jmplo: posils solucions l cto splazar n l caso ncontrar + y rucir n l caso ncontrar * l análisis la cana i*i+i*i+i Otros algoritmos análisis jmplo: posils solucions * + i s () () + () * () i s s s s r s r r s r
Otros algoritmos análisis jmplo: posils solucions l cto splazar n l caso ncontrar * y rucir n l caso ncontrar + l análisis la cana i*i+i*i+i Otros algoritmos análisis jmplo: posils solucions * + i s () () + () * () i s s s s s r r s r r Análisis ascnnt Glosario LR(k): Técnica análisis sintáctico ascnnt qu: xamina la ntraa izquira a rcha (lt-to-right) Construy una rivación rcha la palara analizaa (right-most rivation) Utiliza para llo los k siguints símolos (tokns) la ntraa SLR: Técnica análisis sintáctico ascnnt qu s una simpliicación LR(k). Toma su nomr la xprsión inglsa qu signiica LR sncillo LALR: Técnica análisis sintáctico ascnnt qu s una xtnsión la técnica LR pro utilizano símolos anticipación. Toma su nomr la xprsión ingls look-aha LR qu signiica prcisamnt so. Análisis sintáctico iliograía [Al] Toría Autómatas y lnguajs ormals M. Alonsca y otros [Hop] Introucción a la toría autómatas, lnguajs y computación Hopcrot, J. Motwani, R. Ullman, J. [Aho] Compilaors. Principios, técnicas y hrramintas A. V. Aho R. Sthi J.. Ullman