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:
nnm
● L’intersezione: dei linguaggi contextfree L1={a b c |m,n≥1} e
mnn nnn
L2={a b c |m,n≥1} è {a b c |n,m≥0} che non è contextfree.
● Complemento: se L1 e L2 sono contextfree allora anche ________
__ __
L = L1 ⋃ L2
dovrebbe essere contextfree in virtù dei risultati sull’ unione, ma siccome per
la legge di De Morgan L= L1 ⋂ L2 questo equivarrebbe a dire che i linguaggi
contextfree sono chiusi rispetto all’intersezione, contrariamente a quanto
detto prima.
_
● Differenza : (*)Dato che L può non essere libero dal contesto .
Sapendo che Σ * è contextfree per ogni alfabeto Σ se L1 L2 = L1 ⋂ L2
fosse contextfree quando lo sono L1 e L2, significherebbe che Σ * L è
_
contextfree se lo è L ma per una opportuna scelta Σ * L = L e questo
contraddice l’affermazione vera (*).
_
NOTA : Se L è contextfree e R è regolare ,abbiamo che L − R = L ⋂ R e sono
contextfree.
Definire dominio e range della funzione di transizione di un automa
pushdown (riempire lo spazio sui puntini):
S : Q x (∑⋃{ε}) x Γ → Q x Γ*
Fornire la definizione di linguaggio accettato da un automa pushdown M per
stack vuoto
L(A) = {w ∈ Σ* | (q0, w, Z 0) |−* (q1, ε, ε)}
Dare la definizione formale di grammatica contextfree, 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 rightmost) 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 bottomup? (dal basso
verso l’alto)
Un parser bottomup 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 topdown? (dal l’alto al
basso)
Un parser topdown 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 i1){
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 LRitem 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 pushdown 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 Lattribuito in uno schema di
traduzione.
Trasformare una SDD Lattribuita 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 kindistinguibili
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 kindistinguibili per tutti i k ≥ 0.
Una grammatica contextfree 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 contextfree 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 contextfree 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
• xuwv 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 contextfree
Una grammatica LR(0) è sempre LL(1)?
No
Le grammatiche contextfree 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
n
stesso e dei suoi fratelli.
(A è un simbolo nel corpo della produzione, cioè al membro destro).
Data una grammatica contextfree è sempre possibile costruire un’automa a
pila che riconosca il linguaggio generato dalla grammatica?
Si
Con un’analizzatore topdown si possono realizzare solo traduzioni di
grammatiche Lattribute o anche di grammatiche Sattribute?
Solo Lattribute
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 contextfree 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 pushdown sono riconoscitori naturali dei linguaggi
contextfree. Un automa a pila M è una 7tupla
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,
q0 ∈ 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 reducereduce?
Vi sono grammatiche libere dal contesto a cui la parsificazione shiftreduce 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 contextfree lineare
Sono le grammatiche contextfree 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
contextfree
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 Lattribuita non ha attributi sintetizzati?
Falso.
Una SDD Sattribuita ha attributi ereditati?
Falso. Una SDD è Sattribuita 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 (contextfree)
I linguaggi contextfree sono un sottoinsieme dei linguaggi generati dalle
grammatiche lineari
Falso
In una produzione X →X1 X2 ...Xn di una SDD Lattribuita un attributo
ereditato di Xj è calcolato in funzione:
● attributi ereditati o sintetizzati dei simboli X1 X2 . . . X a sinistra di X
j1 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 contextfree 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 bottomup
● 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
Sattribuita
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 Lattribuita
Una SDD è Lattribuita 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 . . . Xj1 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 Sattribuita
Una SDD è Sattribuita se tutti gli attributi sono sintetizzati
Fornire la definizione di linguaggio accettato per stato finale da un automa
pushdown 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 Lattribuita è 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.