Sei sulla pagina 1di 6

Precorso di Linguaggi di

Programmazione

Docente: Marco de Gemmis


Linguaggi di Programmazione, ICD Taranto

Introduzione ai linguaggi formali


Soluzioni esercizi su grammatiche
Esercitazione
◼ Tool per costruzione e test di grammatiche
 https://web.stanford.edu/class/archive/cs/cs103/cs103.
1156/tools/cfg

2/6
Precorso di Linguaggi di Programmazione
Provate a costruire grammatiche per questi
linguaggi

L1 = {w | w stringa binaria in cui #0(w)=2#1(w)=n≥1 e gli 0


precedono gli 1}
L2 = { w | w stringa binaria in cui #0(w)=2k, k≥0}
L3 = { w | w stringa binaria che contiene almeno una volta
due 0 consecutivi}

3/6
Precorso di Linguaggi di Programmazione
Grammatica per L1

L1 = {w | w stringa binaria in cui #0(w)=2#1(w), #1(w)≥1 e


gli 0 precedono gli 1}

L1 = {001, 000011, 000000111, …}

S → 00S1 | 001

Provate a derivare alcune stringhe di L1.

4/6
Precorso di Linguaggi di Programmazione
Grammatica per L2
L2 = { w | w stringa binaria in cui #0(w)=2k, k≥0}

L2 = {ℇ ,1, 11, 111, … 00, 0000, 0000, 001, 010, 0011,


1010, 001111, …}

S → ℇ | 1S | 0A
A → 1A | 0S | 0

Provate a derivare alcune stringhe di L2, ma anche altre


non appartenenti a L2 (ricordate il concetto di correttezza
di una grammatica?)

5/6
Precorso di Linguaggi di Programmazione
Grammatica per L3

L3 = { w | w stringa binaria che contiene almeno una volta


due 0 consecutivi}
L3 = {00, 000, 0000, 001, 100, 0011, 001111, …}

S → A00A
A → 1A | 0A | ℇ

Provate a derivare stringhe di L3 e non.

6/6
Precorso di Linguaggi di Programmazione

Potrebbero piacerti anche