Sei sulla pagina 1di 14

DOMANDE di TEORIA di L.F.T.

 
 
­Siano ​r ​ s ​
e ​ espressioni regolari che denotano gli insiemi A e B 
rispettivamente; scrivere un’espressione regolare che denoti  
l’insieme ABA ∪ B*A.  
E = { ABA | B*A } 
 
­Definire l’operazione di chiusura di Kleene sui linguaggi (L*).  

0 1
L* =  ∪
i=0
Li  = L ∪L ∪...    

 
+​
­Definire l’operazione di chiusura transitiva (L​) su un linguaggio L.  

1 2
+​
L​ =  ∪
i=1
Li  = L ∪L ∪...    

 
­Per quale classe di linguaggi gli automi (finiti o pushdown) deterministici e 
non deterministici sono equivalenti ? 
La classe dei linguaggi denotati dalle espressioni regolari 
 
­Indicare una operazione per cui i linguaggi Context Free non sono chiusi. 
Complemento, differenza e intersezione: 
n​n​m​
● L’intersezione: ​ dei linguaggi context­free L1={a​ b​ c​ |m,n≥1} e 
m​n​n​ n​n​n​
L2={a​ b​ c​ |m,n≥1}  è  {a​ b​ c​  |n,m≥0} che non è context­free. 
● Complemento:​  se L1 e L2 sono context­free allora anche           ________ 
       __       __ 
 L = L1  ⋃  L2   
dovrebbe essere context­free in virtù dei risultati sull’ unione, ma siccome per 
la legge di De Morgan L= L1  ⋂ L2 questo equivarrebbe a dire che i linguaggi 
context­free sono chiusi rispetto all’intersezione, contrariamente a quanto 
detto prima. 
                                          _   
● Differenza​ : (*)Dato che L  può non essere libero dal contesto .  
Sapendo che  Σ *  ​ ​è context­free per ogni alfabeto  Σ  se L1 ­ L2 = L1  ⋂ L2 
fosse context­free quando lo sono L1 e L2, significherebbe che  Σ * ​ ​­ L  è 
                                                                                              _ 
context­free se lo è L ma per una opportuna scelta  Σ * ​ ​­ L = L   e questo   
            contraddice l’affermazione vera (*). 
      _ 
NOTA​ : Se L è context­free e R è regolare ,abbiamo che  L − R =  L  ⋂ R  e  sono 
context­free. 
 
­Definire dominio e range della funzione di transizione di un automa 
push­down (riempire lo spazio sui puntini):  
 
S : Q x (∑⋃{ε}) x Γ  → Q x Γ*   
 
 
­Fornire la definizione di linguaggio accettato da un automa push­down M per 
stack vuoto 
L(A) = {w ∈ Σ* | (q0, w, Z 0) |−* (q1,  ε, ε)}  
 
­Dare la definizione formale di grammatica context­free, specificando ogni 
elemento della definizione 
G = {V, Σ ,P,S} 
V: insieme di variabili non terminali 
Σ : alfabeto dei simboli terminali 
P: produzioni 
S: assioma  S ∈ V  
 
­Definire la  ε − chiusura  di uno stato di un’automa a stati finiti 
Tutti gli stati che possono raggiungere effettuando mosse silenti, compreso lo stato 
in cui sono 
 
­Se  S→*rm α A w→rm α β1 β2 w  (dove  →*rm  indica derivazione right­most) quali 
affermazioni sono vere? 
A → B1. B2  è un item 
αβ1  è un prefisso ascendente valido 
 
­Dare la definizione formale di insieme guida. 
Gui(A → α) = {a|S ⇒+ βAγ ⇒ βαγ ⇒* βaα′γ}  
Gui(A → α) = F (α) se ε ∈ / F (α),  F (α) − {ε} ⋃F W (A) se ε ∈ F (α)  
Insieme di terminali con cui iniziano le stringhe generate a partire dalla produzione 
stessa 
 
­Cosa si intende in generale per un linguaggio formale? 
Un​  insieme di stringhe di lunghezza finita​  costruita a partire da una alfabeto  Σ  per 
mezzo di grammatiche formali o di macchina matematiche o automi. Un linguaggio è 
definito come  L ⊆ Σ *​   
 
­Se il linguaggio L non è riconosciuto da nessun automa finito deterministico, 
L potrebbe essere riconosciuto da un automa finito deterministico? 
No  
 
­Se una grammatica non è LL1 allora è necessariamente ricorsiva sinistra? 
Vero 
 
­Se una grammatica è ricorsiva a sinistra non è LL1? 
Vero 
 
­Dare la definizione di “handle” 
E’ una sottostringa che costituisce il corpo di una produzione, la cui riduzione 
rappresenta un passo della derivazione destra al contrario  
Se S ⇒* αAw ⇒ αβw, la produzione A → β (o semplicemente β) nella posizione 
“dopo α” e’ un ​ handle ​di αβw.  
 
­Quale derivazione si ricostruisce in un riconoscitore bottom­up?​  (dal basso 
verso l’alto) 
Un parser bottom­up segue un analisi ascendente (ad esempio i parser LR) 
generando una derivazione destra della stringa, ma nell’ordine riflesso, ​ procedendo 
dalle foglie alla radice. 
I passi dell’algoritmo sono in corrispondenza con le operazioni di riduzione. 
 
­Quale derivazione si ricostruisce in un riconoscitore top­down?​ (dal l’alto al 
basso) 
Un parser top­down segue un analisi discendente (ad esempio i parser LL) 
generando una derivazione sinistra, procedendo dall’assioma (radice dell’albero) 
verso le foglie. 
I passi dell’algoritmo sono in corrispondenza con le derivazioni immediate. 
 
­Scrivere l’algoritmo per l’eliminazione della ricorsione sinistra immediata 
for(ogni i da 1 o n){ 
for(ogni j da 1 a i­1){ 
sostituisci le produzioni della forma  Ai → δ1γ|δ2γ|...  in cui   Aj → δ1|δ2|...  
sono tutte le produzioni per il non terminale  Aj in esame. 

elimina la ricorsione sinistra immediata dalle produzioni per A 

In input solo grammatiche prive di cicli e di  ε − produzioni  
 
­Definire l’operazione di concatenazione sui linguaggi (L​ .L​
1​ ) 
2​
L​ .L​
1​ =  {w1, w2 | w1 ∈ L1 ⋀w2 ∈ L2}          es.:{ab,a}.{ba,bb} = {abba,abbb,aba,abb} 
2 ​
 
­Definire la nozione di LR­item per una grammatica G  
Gli stati tengono traccia di dove si e’ nel processo di parsificazione e sono formati da 
insiemi di “​ item​”. 
Un item per una grammatica G e’ una produzione di G con un punto in qualche 
posizione del suo membro destro. 
 
­Fornire la chiusura di un insieme item 
Chiusura di un insieme di item I: 
CLOSURE (I)  
J ← I 
repeat  
for (ogni item A  →  a • B β  in J) 
for (ogni produzione B g di G)  
if (B →  • γ  non e’ in J) J  ← J ⋃ {B → •γ }  
until nessun item e’ aggiunto a J 
return J 
 
­Definire quando una stringa w appartiene al linguaggio accettato da un 
automa push­down per stack vuoto 
(q​ , w, Z​
0​ )  →*  (q,  ε ,  ε ) 
0​
Il linguaggio riconosciuto dall’automa M = < Q, Σ, Γ, δ, q​ , Z​
0​ ,  φ > per stack vuoto è 
0​
l’insieme delle stringhe w il cui esame, a partire dalla configurazione iniziale (q​ , w, 
0​
Z​ ), può portare l’automa M in una configurazione in cui la memoria è vuota:  
0​
LM = (q​ , w, Z​
0​ )  →*  (q,  ε ,  ε ) 
0​
 
­Data una Grammatica ricorsiva sinistra e LL(1) si dia la definizioni di FIRST(α) 

con  α  ∈ (v ∪ ∑ )​
F IRST (α)  =  {a | α ⇒*  aβ} ⋃{ε | se α ⇒*  ε}   
F( α ​ ) soddisfa questa definizione (ricorsiva): 
1. F( ε ) = { ε }  
2. 2. F(a) = {a}  
3. F(A β ) =  F (A) se ε ∈ / F (A),  F (A) − {ε} ⋃F (β) se ε ∈ F (A)  
k
Dove  F (A) = ∪
i=1
F (γi)   se  A → γ1|γ2|...|γk   sono le produzioni della grammatica 

con A come variabile di testa 
 
­Scrivere in pseudocodice l’algoritmo per eliminare i termini annullabili 
Sia  G = (V ,  T ,  P ,  S)  una CFG, tale che L(G) =/ φ , cioè G genera almeno una 
stringa. Sia G1 = (V1, T1, P1, S) la grammatica costruita come segue: 
­per prima cosa eliminiamo i simboli che non sono generatori e le produzioni 
in cui figurano. Sia G2 = (V2, T2, P2, S) la grammatica risultante. Notiamo 
che S è un generatore, per ipotesi che L(G) contiene almeno una stringa; 
dunque S non viene eliminato. 
­eliminiamo poi i simboli non raggiungibili nella grammatica G2 
Allora G1 non contiene simboli inutili e L(G1) = L(G) 
 
­Scrivere in pseudocodice l’algoritmo per eliminare le  ε − produzioni  
Sia  G = (V ,  T ,  P ,  S)  una CFG. Determiniamo tutti i simboli annullabili di G. 
Costruiamo una nuova grammatica G1 = (V1, T1, P1, S), il cui insieme di produzioni 
P1 è definito come segue. Per ogni produzione  A → X 1X 2...X k di P, con k ≥ 1, 
m
supponiamo che m dei k X​  siano annullabili. La nuova grammatica G1 avrà 2​
i​  
versioni della produzione, dove le X​ sono presenti o assenti in tutte le possibili 
i ​
configurazioni. C’è però un’eccezione: se m=k, ossia tutti i simboli sono annullabili (e 
quindi lo è A). Non consideriamo pertanto il caso in cui le X​ siano assenti. Notiamo 
i ​
inoltre che se una produzione della forma  A → ε è in P, non la collochiamo in  P 1  
 
­I linguaggi regolari sono chiusi per complemento? E per intersezione? 
Complemento​ : Se L è un linguaggio regolare sull’alfabeto Σ  allora anche 


L =  Σ * ​
 ­ L è regolare. 
● Intersezione​ : Siano L1 e L2 linguaggi regolari allora anche  L1 ⋂L2  è regolare. 
I linguaggi regolari sono chiusi per tutte le operazioni! 
 
­Specificare con quale criterio vanno inserite delle produzioni le azione 
semantiche per trasformare una definizione L­attribuito in uno schema di 
traduzione. 
Trasformare una SDD L­attribuita in un SDT: 
● Inserire le azioni che calcolano gli attributi ereditati per un non terminale A 
immediatamente prima dell’occorrenza di A nel corpo della produzione. 
● Se diversi attributi ereditati per A dipendono uno dall’altro, ordinare la 
valutazione degli attributi in modo che quelli necessari prima siano calcolati 
per primi. 
● Porre la azioni che calcolano un attributo sintetizzato per la variabile a sinistra 
in una produzione alla fine del corpo della produzione stessa.  
 
­Dare la definizione di stato di spostamento nei riconoscitori dei prefissi 
ascendenti validi { di grammatiche SLR(0) } 
Uno stato è chiamato di spostamento se contiene solo item della forma 
A → β1  • β2(β2  =/  ε)   
 
­Una grammatica e’ LL(1) se:  
Non è ambigua, senza ricorsioni sinistre e per ogni coppia di produzioni del tipo:
A → α  e  A → β  
1. da  α e  β non derivano stringhe che iniziano con lo stesso terminale  
2. al più una tra  α e  β è annullabile 
3. se  α  è annullabile ( α  ⇒* ε ), da  β non deriva nessuna stringa che inizia con 
un terminale nell’insieme FW(A).  
Una grammatica è LL(1) se per ogni non terminale A e per ogni coppia di produzioni 
A → α e A → β, gli insiemi guida sono disgiunti: Gui(A→α) ∩ Gui(A→β) = Φ 
 
­Dare la definizione di stati equivalenti negli automi finiti deterministici 
1. x∈Σ* ​ distingue ​tra p e q se uno e uno solo tra gli stati δ(p, x) e δ(q, x) è finale. 
2. p e q sono ​ k­indistinguibili ​
p k≡ q se nessuna stringa x, |x| ≤ k distingue p da q. 
3. p e q sono ​ indistinguibili ​
p ≡ q se e solo se sono k­indistinguibili per tutti i k ≥ 0.  
 
­Una grammatica context­free senza simboli inutili e prive di derivazioni 
circolari (A=>*A) genera un linguaggio infinito se e solo se:       
Ammette derivazioni ricorsive 
Tale propietà può essere verificata rilevando la presenza di cicli nel grafo della 
relazione binaria “produce” 
 
­Come è stato definito un linguaggio formale? 
Si intende un insieme di stringhe di lunghezza finita costruite sopra un alfabeto finito, 
cioè sopra un insieme finito di oggetti tendenzialmente semplici che vengono 
chiamati caratteri, simboli o lettere. In maniera formale, un linguaggio L è definito 
come   
 
­Dare un esempio di linguaggio context­free che non può essere riconosciuto 
da un’automa a pila deterministico 
     
L  =  {0n1n | n ≥ 1 }  ⋃{0n12n | n ≥ 1  }  
 
­Definire il pumping lemma 
● Ogni ​ linguaggio regolare​  soddisfa una proprietà caratteristica, chiamata 
pumping. In presenza di un falso linguaggio regolare, l’uso di tale proprietà 
permette di ottenere una contraddizione. 
Sia ​L ​un linguaggio regolare: allora ∃n, che dipende solo dal linguaggio, tale 
che ∀w ∈ ​ L​, |w| ≥ n, w si può scrivere come la concatenazione di tre 
sottostringhe xyz tali che:  
y ≠ ε 
|xy| ≤ n 
k​
∀k ≥ 0, xy​ z ∈ ​ L 
● Ogni ​ linguaggio libero​ dal contesto soddisfa una proprietà caratteristica, 
chiamata pumping. 
Per ogni linguaggio context­free L: esiste una costante caratteristica k, che 
dipende solo da L, tale che ogni frase z  ∈ L, di lunghezza maggiore o uguale 
a k: |z| >= k, si può scrivere come la concatenazione di cinque sottostringhe 
xuwvy con: 
• |uwv| ≤  k, 
• uv  =/ ε  e 
i​ i​
• xu​wv​ y  ∈ L per ogni i ≥ 0.  
 
­Una grammatica LL può avere  ε − produzioni ? 
Si, per coppia di produzioni  A → α  e  B → β    
● al più una tra  α e  β  è annullabile  
● se  α  è annullabile ( α  ⇒* ε ), da  β non deriva nessuna stringa che inizia con 
un terminale nell’insieme FW(A).  
­Una traduzione diretta dalla sintassi si può associare a grammatiche non 
ambigue? 
Si 
 
­Qual’è la minima classe di linguaggi che contiene tutti i linguaggi finiti ed è 
chiusa per unione, concatenazione e Kleene? 
Classe dei linguaggi context­free 
 
­Una grammatica LR(0) è sempre LL(1)? 
No 
 
­Le grammatiche context­free ambigue generano linguaggi che non possono 
essere riconosciuti da nessun automa a pila? 
Falso 
 
­Nozione di indistinguibilità usata nella costruzione dell’automa minimo  
s ​ t(stati) ​
e ​ sono ​indistinguibili ​
se e solo se nessuna stringa (di nessuna lunghezza) 
distingue ​ s ​ t​
da ​.  
 
­Scrivere la definizione di attributo ereditato per una variabile A in un nodo 
dell’albero n dell’albero di parsificazione 
Un attributo ereditato per una variabile A in un nodo ​ n ​dell’albero di parsificazione è 
definito da una regola semantica associata alla produzione nel nodo padre di ​ n ​
e il 
suo valore è calcolato solo in termini dei valori degli attributi del padre di  n​, di ​

stesso e dei suoi fratelli. 
(A è un simbolo nel corpo della produzione, cioè al membro destro).  
 
­Data una grammatica context­free è sempre possibile costruire un’automa a 
pila che riconosca il linguaggio generato dalla grammatica? 
Si 
 
­Con un’analizzatore top­down si possono realizzare solo traduzioni di 
grammatiche L­attribute o anche di grammatiche S­attribute? 
Solo L­attribute 
 
­ Nell’analisi sintattica ascendente il riconoscitore dei prefissi ascendenti  
validi è: 
Un’automa a stati finiti deterministico che riconosce i prefissi ascendenti validi 
 
­Spiegare perchè una grammatica SLR(0) non può essere ambigua  
Una grammatica ambigua ha più di una derivazione destra o sinistra per la stessa 
stringa in esame, in una grammatica SLR(0) non è possibile più di una derivazione 
destra. 
  
Costrutti di linguaggi ambigui hanno più parse tree e quindi il loro riconoscimento 
non può essere deterministico. 
 
­Quale è la condizione che una grammatica context­free G deve soddisfare 
perchè il linguaggio generato sia infinito? 
Il linguaggio L(G), generato da una grammatica G pulita (senza simboli inutili e priva 
di derivazioni circolari) è infinito se e solo se G ammette derivazioni ricorsive. 
 
­Quale linguaggio X soddisfa l’equazione  X = L1X ⋃L2  
w tale che w = xUy, dove x =  g concatenato X (con g appartenente a L1) e y 
appartenente L2. 
 
­Dare la definizione formale di automa a pila?        
Gli automi a pila o automa push­down sono riconoscitori naturali dei linguaggi 
context­free. Un automa a pila M è una 7­tupla 
M = < Q, Σ, Γ, δ, q0, Z0, F > 
dove: 
Q è l’insieme degli stati dell’unità di controllo (finito e non vuoto), 
Σ è l’alfabeto di ingresso, Γ è l’alfabeto della pila, δ è la funzione di transizione, 
q​0​  ∈ Q è lo stato iniziale, Z 0​
  ∈ Γ è il simbolo iniziale della pila,  
F ∈ Q è l’insieme degli stati finali. 
L’automa può fare due tipi di transizioni che si possono chiamare mossa con lettura 
e mossa spontanea. 
Nota: Definiamo l’automa a pila non deterministico. Contrariamente a quanto 
dimostrato per gli automi a stati finiti, per gli automi a pila i modelli non deterministico 
e deterministico non sono equivalenti.  
 
­Dare la definizione formale dell’insieme dei seguiti FOLLOW 
L’insieme FOLLOW di una variabile A è l’insieme dei terminali con cui iniziano le 
stringhe che seguono A nelle forme sentenziali della grammatica G. 
FOLLOW(A) = {a | S  ⇒ *  α Aa β } ∪ {$|se S→*αA}  
 
­Cosa si intende per conflitto reduce­reduce? 
Vi sono grammatiche libere dal contesto a cui la parsificazione shift­reduce con look 
ahead 1 non può essere applicata:  
­noto il contenuto dello stack e il prossimo simbolo in input non si è in grado di 
decidere se aggiungere il simbolo (lo stato) sullo stack o applicare una 
riduzione (conflitto shift/ reduce)  
­oppure non si e` in grado di decidere quale tra piu` possibili riduzioni 
effettuare (conflitto reduce/reduce). 
 
­Definire la nozione di grammatica context­free lineare 
Sono le grammatiche context­free unilineari sinistre o destre, cioè : 
• unilineare destra: 
A →uB                               u∈Σ*, B∈V∪{ε}  L = { (01)n/ n > 0}  
S → 01S | A  
A → 01  
• unilineare sinistra: 
A →Bv                                v∈Σ*, B∈V∪{ε}  L = { (01)n/ n > 0}  
S → S01 | A  
A → 01       
 
Una grammatica è lineare se le sue regole hanno la forma: 
A →uBv  u,v∈Σ*, B∈V∪{ε}  
S → 01S10 | A  
A → 0110 
L = { (01)n(10)n / n > 0}  
 
­Definire la nozione di non terminale “non definito” in una grammatica 
context­free 
Non terminali non definiti, che generano cioè linguaggi vuoti (A non è definito se 
LA(G)≠Φ ossia se A⇒+ x∈S*)  
 
­Fornire la definizione dell’insieme delle parole accettate da un automa finito 
NFA 
Linguaggi regolari 
 
­Una grammatica non SLR(1) può essere SLR(0)? 
Si, perchè se una grammatica non è SRL(1) significa che la grammatica in esame 
può: 
● Presentare in uno stato un conflitto shift/reduce che non può essere risolto 
con un simbolo di lookhead da cui deduciamo che essendoci in questo stato 
sia item nella forma  A → β1• β2(β2 =/ ε) e  A → β •  si tratti di uno stato 
inadeguato, questa grammatica per tanto non è nemmeno SLR(0) 
● Oppure non presentare stati inadeguati, in questo caso si tratta di una 
grammatica SLR(0) 
 
­Una grammatica SLR(1) può essere SLR(0)? 
No, perche una G(SLR(1)) necessita di un simbolo di lookahead, di conseguenza 
una G di tale tipo non puo essere ridotta ad una SLR(0),poiche non ha nessun 
simbolo di lookahead. 
 
­Una SDD L­attribuita non ha attributi sintetizzati? 
Falso. 
 
­Una SDD S­attribuita ha attributi ereditati? 
Falso. Una SDD è S­attribuita se tutti gli attributi sono sintetizzati 
 
­Dare la definizione di attributo ereditato per un non terminale A in un nodo n 
di un albero di parsificazione 
Un attributo ereditato è un attributo il cui valore viene calcolato in funzione al valore 
del nodo padre, al valore del nodo fratello e al valore del nodo stesso 
 
­Cosa significa che due automi pushdown M1 e M2 sono equivalenti? 
Vuol dire che riconoscono lo stesso linguaggio (context­free) 
 
­I linguaggi context­free sono un sottoinsieme dei linguaggi generati dalle 
grammatiche lineari 
Falso 
 
­In una produzione X →X1 X2 ...Xn di una SDD L­attribuita un attributo 
ereditato di Xj è calcolato in funzione: 
● attributi ereditati o sintetizzati dei simboli X1 X2 . . . X​  a sinistra di X​
j­1​  nella 
j​
produzione;  
● attributi ereditati di X; 
● attributi ereditati o sintetizzati di X​, purchè non vi siano cicli nel grafo delle 
j​
dipendenze formati dagli attributi di questa occorrenza di X​ . 
j​
 
­Dare la definizione di stato di spostamento dei riconoscitori dei prefissi 
ascendenti validi di grammatiche SLR(0)    
Uno stato e’ chiamato di spostamento se contiene solo item della forma A → β1•β2 
(β2 ≠ ε) 
Una grammatica e’ ​ Simple LR(0) (SLR(0)) ​ se nessuno stato del riconoscitore dei 
prefissi ascendenti e’ inadeguato. 
 
­Dare la definizione di grammatica unilineare a destra e sinistra 
Una grammatica è strettamente unilineare se le sue regole hanno la forma: 
­s. unilineare destra: 
se tutte le produzioni sono della forma: 
A → aB a ∈ Σ ⋃{ε}    e     B ∈ V ⋃{ε}  
 
­s. unilineare sinistra: 
se tutte le produzioni sono della forma: 
A → Ba a ∈ Σ ⋃{ε}     e     B ∈ V ⋃{ε}  
 
Ogni grammatica unilineare destra e` equivalente a una grammatica unilineare 
sinistra, e viceversa. 
 
­Il pumping lemma per i linguaggi context­free si applica solo ai linguaggi 
infiniti o a tutti? 
Infiniti 
 
­Dato un albero di parsificazione annotato come è possibile verificare se gli 
attributi sono valutabili e trovare un’ordine di valutazione? 
Costruendo il grafo delle dipendenze basandosi sull’albero di parsificazione 
riusciamo a scoprire se la valutazione è possibile e in tal caso trovare un’ordine per 
la valutazione stessa. Per trovare un’ordine di valutazione: 
● prima di valutare un attributo in un nodo, si devono valutare gli attributi dai 
quali dipende il suo valore 
● gli attributi sintetizzati possono essere valutati in ordine bottom­up 
● negli SDD che hanno sia attributi sintetizzati, sia ereditati, non vi è garanzia 
che vi sia almeno un ordine in cui valutare gli attributi nei nodi perché 
potrebbero essere presenti regole “circolari” che rendono impossibile la 
valutazione.  
 
­Spiegare come si costruisce lo schema di traduzione per una grammatica 
S­attribuita 
Tutti gli attributi devono essere sintetizzati. Lo schema di traduzione si ottiene 
ponendo le azioni semantiche alla fine delle produzioni.  
Es.:  E → E1 + T    {E.val  =  E1.val  +  T .val}  
 
­Fornire l’espressione regolare soluzione della seguente equazione  
A = Abab | c | d | ε 
* ​
E = { (bab | c | d)​ }  
 
­Fornire la definizione di equivalenza debole ed equivalenza forte o strutturale 
tra due grammatiche libere non ambigue G1 e G2 
● Equivalenza debole: due grammatiche G1 e G2 si dicono equivalenti se 
generano lo stesso linguaggio. E’ indecidibile 
● Equivalenza forte: ​ Due grammatiche G1 e G2 sono fortemente o 
strutturalmente equivalenti se sono debolmente equivalenti e gli alberi di 
derivazione condensati sono uguali. Quindi alla luce delle definizioni, se una 
grammatica è fortemente equivalente è anche debolmente equivalente, ma 
non viceversa. E’ decidibile 
 
­Scrivere la definizione di grammatica L­attribuita 
Una SDD è L­attribuita se gli attributi sono:  
­ sintetizzati e/o 
­ ereditati e soddisfano il seguente vincolo: 
per ogni produzione A → X1 X2 . . . Xn, ogni attributo ereditato di Xj dipende solo da: 
• attributi ereditati o sintetizzati dei simboli X1 X2 . . . Xj­1 a sinistra di Xj nella 
produzione; 
• attributi ereditati di A 
• attributi ereditati o sintetizzati di Xj, purchè non vi siano cicli nel grafo delle 
dipendenze formati dagli attributi di questa occorrenza di Xj. 
 
­Fornire la definizione di SDD S­attribuita 
Una SDD è S­attribuita se tutti gli attributi sono sintetizzati 
 
­Fornire la definizione di linguaggio accettato per stato finale da un automa 
push­down  M =   < Q,  Σ,  Γ,  δ,  qo,  Z o,  F >  
Sia  M =   < Q,  Σ,  Γ,  δ,  qo,  Z o,  F >  un PDA, allora il linguaggio L(M) accettato da M 
per stato finale è  {w | (qo,  w,  Z o) |−*p (q,  ε,  α)}  per ogni stato q in F e una stringa 
qualsiasi  α  
 
­In una SDD L­attribuita è possibile individuare un ordine di valutazione degli 
attributi? 
Si. Queste classi garantiscono l’esistenza di un ordine di valutazione poiche’ non 
ammettono grafi di dipendenza ciclici e le regole possono essere convertite in un 
SDT con azioni specificate al momento giusto.  
 
­Nell’automa riconoscitore dei prefissi ascendenti validi di una grammatica 
SLR(0) sono ammessi stati in cui ci sono conflitti reduce/reduce? 
No, se ci sono conflitti la grammatica non è SLR(0) 
 
­Regola generale per costruire una espressione regolare da un’automa: 
(R + SU *T )*SU *    
R=transizione che dallo stato iniziale torna in se stesso, U=transizione. che dallo 
stato finale torna in se stesso, S=transizione. che dallo stato iniziale va a quello 
finale, T=transizione che dallo stato finale torna a quello iniziale 
 
Esistono linguaggi regolari che non sono LR(0) ? 
Si, poiché tutti i linguaggi che hanno intersezione non vuota con l’insieme dei propri 
prefissi non sono LR(0), mentre tutti i linguaggi finiti sono regolari. Esempio un 
linguaggio che contiene solo la stringa vuota e un carattere.