LINGUGGI E COMPILTORI COMPILTORI Prov scritt del 28 febbrio 2011 Risultti MRTINELLI 18 D EPIFNIO 20 BOINO 24 DELÌU 27 VINO 27 PIETRELLI 23 NDREOCCI 30 DI SCHINO 20 ROMEO 24 MERCURI 27 NICOLIELLO 21 HIB MERCDNTE L ROCC ZCCRDI CMMRNO ROCCO SIRN HOH 1
Esercizio 1 Si consideri l grmmtic contestule G con produzioni S ε by ε Y by 1.1 Dopo ver trsformto G in form normle di Chomsky, si C l grmmtic che ne result. pplicre l lgoritmo CYK ll grmmtic C per verificre che l string è un frse di C (e, quindi, di G). Quindi, decidere se è mbigu costruendone tutti gli lberi di derivzione. 1.2 Dll grmmtic C si derivi l grmmtic contestule C che gener il linguggio L(C)\{ε}. Quindi, costruire l utom (deterministico) D delle preformule di C (privo di stti morti). Si D l versione complet dell utom D. Costruire un utom finito deterministico completo D equivlente D di dimensione minim e, fcendo uso del Lemm di rden, si fornisc un espressione regolre del linguggio ccettto d D (e, quindi, d D e D). 1.3 Dopo ver costruito nche l tbell T delle zioni per grmmtic C, descrivere il processo di riduzione per l string utilizzndo l utom D e l tbell T. Esercizio 2 2.1 Dto un lfbeto Σ, dre l definizione di un linguggio su Σ. 2.2 Descrivere il processo di compilzione di un progrmm scritto in un linguggio sorgente L. 2
Soluzione Esercizio 1. 1.1 L grmmtic C h produzioni S ε S S Le sottostringhe x i,j di x = sono qui di seguito riportte. 11 21 31 12 13 22 - - - Tbell delle sottostringhe x i,j Con l lgorimo CYK clcolimo gli insiemi N i,j : 11 S 11 : 11 : 11 : 21 S 21 : 21 : 21 : 31 S 31 : 31 : 31 : 12 S 22 : 21, 31 22 : 21, 31 22 S 22 : 21, 31 22 : 21, 31 13 - - S 13 : 11, 22 13 : 11, 22 - Tbell degli insiemi N i,j 3
Visto che il simbolo specile S pprtiene d N 1,3, possimo concludere che l string è un frse di G e, siccome bbimo un unico lbero di derivzione, l frse non è mbigu. 1.2 L grmmtic C h produzioni (1) S (2) S (3) (4) (5) Il digrmm dell utom delle trcce delle produzioni di C è: S (0,0) (0,1) (1,0) (1,1) (1,2) (2,0) (2,1) (5,0) (5,1) (4,0) (4,1) (3,0) (3,1) (3,2) 4
Il digrmm delle trnsizioni dell utom finito D delle preformule di C è: q 1 q 4 q 7 S q 0 q 2 q 5 q 3 q 6 dove q 0 = {(0,0), (1,0), (2,0), (5,0)} q 1 = {(0,1)} q 2 = {(1,1), (3,0), (4,0), (5,0)} q 3 = {(2,1), (5,1)} q 4 = {(3,0), (3,1), (4,0), (5,0)} q 5 = {(4,1), (5,1)} q 6 = {(1,2)} q 7 = {(3,2)} e tutti gli stti sono di ccettzione. Il digrmm delle trnsizioni dell utom finito deterministico D (con soli stti di ccettzione) è: 0 1 S,, 2 5
λ 0 = {} λ 1 {S, } λ 2 {ε} λ 1 = {} λ 1 {, } λ 2 {ε} λ 2 = {ε} Soluzione: λ 0 = {} + {,, ε} {S,, ε} λ 1 = {} + {,, ε} λ 2 = {ε} Espressione regolre di L(D ): (() + ( ε)) (S ε) 1.3 Per i corpi delle produzioni di C bbimo I() = I() = {} e per i simboli nonterminli bbimo J(S) = J() = {#} e J() = {}. L tbell delle zioni stto # q 0 q 1 q 2 T T q 3 R(5) R(2) q 4 T q 5 R(5) R(4) q 6 R(1) R(3) q 7 non contiene celle multiple, l qul cos f di C un grmmtic dell clsse LR(1). 6
Il processo di riduzione per l string si svilupp come segue. pil buffer zione q 0 # T q 0 q 3 # R ( ) q 0 q 2 # T q 0 q 2 q 5 # R ( ) q 0 q 2 q 4 # T q 0 q 2 q 4 q 5 # R ( ) q 0 q 2 q 4 q 7 # R ( ) q 0 q 2 q 6 # R (S ) q 0 Sq 1 # e le voci contenute nell pil nel corso dell riduzione sono le preformule: ε S Esercizio 2. 2.1 Un linguggio su Σ è un insieme di stringhe su Σ. 2.2 (vedi Dispense). 7