• Non ci sono risultati.

1Derivazioneinunpasso CFG—Derivazionielinguaggiogenerato AzzoliniRiccardo2020-11-24

N/A
N/A
Protected

Academic year: 2021

Condividi "1Derivazioneinunpasso CFG—Derivazionielinguaggiogenerato AzzoliniRiccardo2020-11-24"

Copied!
4
0
0

Testo completo

(1)

Azzolini Riccardo 2020-11-24

CFG — Derivazioni e linguaggio generato

1 Derivazione in un passo

Data una CFG G =⟨V, T, Γ, S⟩, si definisce la relazione di derivazione in un passo,

G, tale che αAβ Gαγβ se

• α, β, γ∈ (V ∪T )sono generiche stringhe sull’insieme dei terminali e non-terminali della grammatica;

• A∈ V è un simbolo non-terminale della grammatica;

• γ è il corpo di una regola produzione della grammatica che ha A come testa, cioè l’insieme delle regole di produzione Γ contiene una regola A→ γ.

Sostanzialmente, questa relazione indica come trasformare stringhe che contengono un simbolo non-terminale in stringhe nelle quali tale simbolo è stato sostituito con il corpo di un’opportuna regola di produzione.

Osservazione: È possibile che γ contenga a sua volta il simbolo non-terminale A.

1.1 Esempi

Si consideri la grammatica

Gpal=⟨{P }, {0, 1}, Γ, P ⟩ P → ϵ | 0 | 1 | 0P 0 | 1P 1 introdotta in precedenza.

Alcuni esempi di derivazioni in un passo corrette su Gpal sono:

• P Gpal 0, ottenuta ponendo α = β = ϵ e applicando la regola di produzione P → 0;

• 00P 00⇒Gpal 001P 100, in cui α = β = 00 e la regola applicata è P → 1P 1;

• 00P 11⇒Gpal 0011, ottenuta con α = 00, β = 11 e P → ϵ.

1

(2)

Come già anticipato, si dimostrerà che la grammatica Gpal genera il linguaggio Lpal su {0, 1}. Si osserva però che, nella derivazione in un passo

00P 11⇒Gpal 0011

si ottiene una stringa non palindroma, 0011, ma l’applicazione della regola è comunque corretta (tutto è coerente rispetto alla definizione di derivazione in un passo): si vedrà in seguito che 0011 non fa parte del linguaggio generato perché, a partire dal simbolo iniziale della grammatica, non è possibile ottenere la stringa di sinistra della derivazione (00P 11).

2 Derivazione in zero o più passi

Data una CFG G =⟨V, T, Γ, S⟩, la relazione di derivazione in zero o più passi, G, è la relazione ottenuta considerando zero o più passi di derivazione. Formalmente, questa relazione può essere definita equivalentemente in modi diversi:

G è la chiusura riflessiva e transitiva di G, cioè la più piccola relazione tale che:

1. per ogni α ∈ (V ∪ T ), α G α (questo è il caso in cui si effettuano zero passi);

2. se α⇒G β e β⇒Gγ, allora α⇒G γ.

• Si ha α⇒Gβ se e solo se – α = β

– oppure

α = γ0 Gγ1G· · · ⇒Gγn= β cioè esistono γ0, γ1, . . . , γn∈ (V ∪ T ), con n≥ 1, tali che:

1. γ0 = α;

2. γn= β;

3. ∀i = 0, 1, . . . , n − 1, γi Gγi+1.

Osservazione: Definire anche le derivazioni in zero passi, che lasciano la stringa di par- tenza inalterata, serve ad avere un caso base “comodo” nelle dimostrazioni per induzione di alcune proprietà delle derivazioni.

Notazione: Se la grammatica G è chiara dal contesto, si possono scrivere semplicemente

⇒ e⇒ invece di ⇒ G e G.

2

(3)

3 Linguaggio generato da una CFG

Data una CFG G =⟨V, T, Γ, S⟩, il linguaggio generato da G è L(G) ={w ∈ T | S⇒ w}

cioè l’insieme delle stringhe composte solo da simboli terminali che sono derivabili in zero o più passi a partire dal simboli iniziale della grammatica.

Un linguaggio L ⊆ Σ è un linguaggio libero dal contesto (Context-Free Lan- guage, CFL) se esiste una CFG G = ⟨V, Σ, Γ, S⟩ che genera L, cioè tale che L(G) = L.

4 Esempio di derivazione

Si consideri la grammatica semplificata delle espressioni introdotta in precedenza:

GExp =⟨{E, I}, {+, ∗, (, ), a, b, 0, 1}, Γ, E⟩

E→ I | E + E | E ∗ E | (E) I → a | b | Ia | Ib | I0 | I1

Si vuole generare una stringa appartenente al linguaggio L(GExp). Per definizione, biso- gna partire dal simbolo iniziale della grammatica e applicare regole di produzione fino a ottenere una stringa composta solo da simboli terminali. Scegliendo in modo sostanzial- mente casuale quali regole di produzione applicare (perché lo scopo di questo esempio è solo mostrare come funziona il processo), una possibile derivazione è:

E⇒ E ∗ E Regola E→ E ∗ E

⇒ I ∗ E E→ I

⇒ a ∗ E I → a

⇒ a ∗ (E) E→ (E)

⇒ a ∗ (E + E) E→ E + E

⇒ a ∗ (I + E) E→ I

⇒ a ∗ (a + E) I → a

⇒ a ∗ (a + I) E→ I

⇒ a ∗ (a + I0) I → I0

⇒ a ∗ (a + I00) I → I0

⇒ a ∗ (a + b00) I → b

(dove ciascun simbolo non-terminale evidenziato in grassetto è quello a cui viene appli- cata una regola nel passo successivo). La stringa ottenuta all’ultimo passo, a∗ (a + b00),

3

(4)

è formata interamente da simboli terminali: anche volendo, non ci sono più regole da applicare, quindi la derivazione si deve per forza interrompere. Tutta la derivazione viene infine riassunta dalla relazione E⇒ a ∗ (a + b00), e si ha che a ∗ (a + b00) ∈ L(G Exp).

Si può osservare che qui, a ogni passo di derivazione, si è scelto di applicare una qualche regola di produzione al simbolo non-terminale più a sinistra nella stringa. Il modo di scegliere su quale simbolo non-terminale lavorare prende il nome di strategia di deri- vazione. In particolare, la scelta del non-terminale più a sinistra è chiamata derivazione leftmost, indicata conlm e lm: E⇒lm a∗ (a + b00). Un’altra è la strategia di derivazione rightmost (rm erm ), nella quale si applicano le regole di produzione sempre al simbolo non-terminale più a destra. La stringa a∗ (a + b00) può essere derivata anche con la strategia rightmost, E rm a∗ (a + b00):

E ⇒ E ∗ E Regola E → E ∗ E

⇒ E ∗ (E) E → (E)

⇒ E ∗ (E + E) E → E + E

⇒ E ∗ (E + I) E → I

⇒ E ∗ (E + I0) I → I0

⇒ E ∗ (E + I00) I → I0

⇒ E ∗ (E + b00) I → b

⇒ E ∗ (I + b00) E → I

⇒ E ∗ (a + b00) I → a

⇒ I ∗ (a + b00) E → I

⇒ a ∗ (a + b00) I → a

Si vedrà più avanti che, in generale, la scelta della strategia di derivazione non influisce sul linguaggio generato da una CFG.

4

Riferimenti

Documenti correlati

Similmente, ogni circuito che produce un segnale in uscita ha una resistenza (impedenza) di uscita, ovvero (nel caso di un segnale emesso sotto forma di tensione) si comporta come

Se questa è troppo bassa, il segnale digitale ottenuto dalla conversione può diventare un alias del segnale originale, cioè un segnale di fatto completamente diverso, che assume

quando la tensione all’ingresso invertente del comparatore, che dipende dal livello di luce, scende sotto la tensione di soglia generata dal potenziometro, il comparatore ac- cende

Il meccanismo di selezione degli slave a livello hardware, tramite le linee SS, rende sem- plice e veloce la comunicazione, e permette un’elevata flessibilità (ad esempio, se uno

Nel caso di un’antenna usata per trasmettere, esso è il rapporto tra la potenza irradiata dall’antenna in una particolare direzione 1 e la potenza del segnale fornito in

In base a ciò, ogni bridge che “scopre” di non essere il percorso migliore per arrivare a questo segmento blocca la sua porta connessa al segmento, mentre l’unico bridge che non

L’offset 185 indica che questo datagramma contiene i byte della SDU originale a partire dal numero 1480 (185 · 8); siccome anche in questo datagramma ci stanno 1480 byte di

Quando il datagramma passa dal router di frontiera, il NAT sostituisce il source address presente nel datagramma con l’indirizzo pubblico del router, 128.195.4.119, e salva