• Non ci sono risultati.

Backus Naur Form

N/A
N/A
Protected

Academic year: 2021

Condividi "Backus Naur Form"

Copied!
5
0
0

Testo completo

(1)

Backus Naur Form

Paolo Bison

Fondamenti di Informatica Ingegneria Meccanica

Università di Padova A.A. 2008/09

BNF , Paolo Bison, FI08, 2008-09-29 – p.1

Linguaggio di programmazione

 strumento linguistico per scrivere una sequenza di istruzioni (programma) che definiscono una computazione

 descritto da

 sintassi

 semantica

BNF , Paolo Bison, FI08, 2008-09-29 – p.2

Linguaggio formale

 sintassi

- Backus Naur Form (BNF)

 semantica

- operazionale - denotazionale

Backus Naur Form (BNF)

 formalismo per descrivere la sintassi

 metalinguaggio

(2)

Concetti - I

 alfabeto V

insieme finito non vuoto di simboli terminali {a, b, c}

 stringa (frase)

sequenza finita di lunghezza arbitraria di elementi di V aacabc

 stringa vuota λ

stringa di lunghezza nulla

 universo linguistico V

l’insieme di tutte le stringhe, compresa la stringa vuota, su V {λ , a, b, c, aa, ab, ac, bb, ba, bc, cc, ca, cb, aaa, ...}

BNF , Paolo Bison, FI08, 2008-09-29 – p.5

Concetti - II

 linguaggio L sottoinsieme di V

{x ∈ V : x termina con c } = {c, ac, bc, cc, aac, ...}

 grammatica

descrizione finita di un linguaggio L

BNF , Paolo Bison, FI08, 2008-09-29 – p.6

Grammatica di tipo 0

G = (V, N, P, S) V un alfabeto

N un insieme finito non vuoto di simboli a non

terminali(categorie sintattiche) tali per cui N ∩V = /0 P un insieme finito non vuoto di regole sintattiche

(produzioni) del tipo α → β b con α ∈ (V ∪ N) +c e β ∈ (N ∪V )

S simbolo iniziale (assioma) con S ∈ N

a

a volte espressi nella forma <nome>

b

il simbolo → pu`o essere sostituito da ::=

c

(V ∪ N)

+

= (V ∪ N)

− {λ}

Esempio grammatica

 G = (N,V, S, P) dove V = {a, b, c} , N = {A, B} , S = A P = {

A → aAb,

aA → Bc,

B → bc

}

(3)

Derivazione

 una frase w ∈ V è generata da G se esiste una sequenza finita di frasi w k ∈ (V ∪ N) con 0 ≤ k ≤ n

w 0 ⇒ w 1 ⇒ w 1 ⇒ ... ⇒ w n

tale che w 0 sia S , w n = w e w i+1 sia ottenuta da w i (0 ≤ i < n) , sostituendo una qualunque occorrenza della sottostringa α in w i con la stringa β se esiste la produzione α → β a

 A ⇒ aAb ⇒ aaAbb ⇒ aBcbb ⇒ abccbb

 linguaggio generato L G

insieme delle frasi di V derivabili a partire dall’assioma S

a

α `e una sottostringa in w

i

se e solo se esistono due stringhe u e v (even- tualmente vuote) tali che uαv = w

i

, allora w

i+1

= uβv

BNF , Paolo Bison, FI08, 2008-09-29 – p.9

Albero sintattico

 rappresentazione grafica del processo di derivazione

A A

a b

aA b B c b c

BNF , Paolo Bison, FI08, 2008-09-29 – p.10

Grammatica ambigua

 esistono due o più derivazioni per generare una frase

 G = (N,V, S, P) con

V = {a, b} , N = {A, B,C} , S = A P = {A → ABA, A → C, B → b,C → a}

 ababa

A B A

b A B A A

C b C

C a

A B A b A B A

A

C b C

C a

Extended BNF (EBNF)

 γ → α 1 | α 2 | α 3

scelta multipla, equivale a γ → α 1

γ → α 2

γ → α 3

 γ → [α]β

elemento opzionale, equivale a γ → αβ | β

 γ → {α}β

numero arbitrario ≥ 0 di occorrenze della stringa α , equivale a γ → β | αγ

 γ → {α} n β

numero arbitrario ≥ 0 e ≤ n di occorrenze della stringa α

(4)

Costanti numeriche

 sequenza di cifre che può essere preceduta o meno dal segno + o dal segno -

 grammatica G :

V = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, −},

N = {< digit >, < sign >, < number >}, P = {

< digit > ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

< sign > ::= + | −

< number > ::= [< sign >] < digit > {< digit >}

},

S =< number >

BNF , Paolo Bison, FI08, 2008-09-29 – p.13

Diagrammi sintattici

 rappresentazione grafica delle regole di generazione

BNF , Paolo Bison, FI08, 2008-09-29 – p.14

Esercizio 1

Quali dei seguenti insiemi sono alfabeti:

A = {a, b, c, d}

B = {n ∈ N : n ≤ 100 ed è primo } C = /0

D = { /0}

E = {0}

F = {x ∈ R : −1 ≤ x ≤ 1}

Esercizio 2

Sia data la grammatica G = ({x, y}, {S, A}, P, S) le cui produzioni sono:

S ::= xAy A ::= xAy A ::= λ

Si dica quale è il linguaggio L G generato da questa grammatica.

(5)

Esercizio 3

Sia data la seguente grammatica G = (N,V, S, P) dove

N = {A, B,C} , V = {a, b, c, [, ], (, ), +} , S = A e le produzioni P sono:

A ::= [B + A] | B B ::= C | (A) C ::= a | b |c

Si dica quali delle seguenti stringhe appartengono o meno al linguaggio generato da tale grammatica e se ne disegni l’albero sintattico:

1. ([a+b]) 2. [a+b]+(c)

3. [(c)+a] 4. [[a+b]*(c-b)+[b+a+c]]

BNF , Paolo Bison, FI08, 2008-09-29 – p.17

Esercizio 4

Si definisca una grammatica G = (V, N, P, S) per generare numeri complessi nella forma a +i b oppure a -i b ,dove a e b sono sequenze di cifre.

BNF , Paolo Bison, FI08, 2008-09-29 – p.18

Riferimenti

Documenti correlati

La presenza di un servizio di manutenzione all’interno di una realtà ospedaliera garantisce anche una conoscenza della storia delle apparecchiature, sia per

DATI E MODELLO 35 Si può notare come la tempo varianza della risposta impulsiva inuenzi soprattutto gli arrivi più tardivi: essendo questi dati da raggi che percorrono una

Regnauld [14] focuses on the development of an algorithm for generalising build- ings from 1:15,000 to 1:50,000. His attention is no longer on generalisation of build- ing shapes,

In Byob i dati di prima classe sono molti di più, si utilizzano quindi ingressi di molti più tipi, che comprendono anche procedure, liste e oggetti.. Richiamiamo ora la descrizione

We used the LIVE IQA database [27] to test the perfor- mance of BRISQUE, which consists of 29 reference images with 779 distorted images spanning five different distortion categories

Nell'esecuzione di richieste al server PHP è quindi più favorita perché può fare delle richieste SOAP o REST che non fanno altro che eseguire altro codice PHP (nel nostro caso vi

Come conseguenza ai lavori precedenti e alle problematiche riscontrate (dataset sporco, rilevazione multipla di una stessa discontinuità, rete neurale ecces- sivamente grande per

Attualmente non è però possibile percorrere questa strada dal momento che alcune funzioni svolte dal software LabVIEW, come ad esempio lo scambio di dati con un