Grammatiche Generative

Messaggioda Tipper » 02/08/2006, 14:11

Ho provato a fare questo esercizio: costruire una Grammatica G=(T, N, P, S) di Tipo 2 per generare frasi di selezione del Linguaggio C della forma:
if(condizione) {................} else {................}
dove per il blocco {................} si consideri un'istruzione di assegnazione.
Con T si intende l'alfabeto dei terminali, con N l'alfabeto dei non terminali, con S l'assioma e con P l'insieme delle produzioni.
Io l'ho svolto in questo modo:

T={'if', 'else', '(', ')', '{', '}', '=', '==', '>', '<', '>=', '<=', '!=', 'a', 'b', ..., 'z', '0', '1', ..., '9', ';'}

N={'<assioma>', '<condizione>', '<blocco>', '<variabile>', '<op.confronto>', '<numero>', '<lettera>', '<secondaparte>', '<cifra>', '<assegnamento>'}

S={'<assioma>'}

Questo invece è l'elenco delle produzioni:

<assioma> $\to$ if<condizione><blocco>else<blocco>

<condizione> $\to$ (<variabile><op.confronto><numero>) | (<variabile><op.confronto><variabile>)+

<variabile> $\to$ <lettera> | <lettera><secondaparte>

<secondaparte> $\to$ <lettera> | <numero> | 0 | <lettera><secondaparte> | <numero><secondaparte> | 0<secondaparte>

<cifra> $\to$ 1 | 2 | ... | 9

<numero> $\to$ <cifra> | <cifra>0 | <cifra><numero> | <cifra>0<numero>

<op.confronto> $\to$ == | > | < | >= | <= | !=

<assegnamento> $\to$ <variabile>=<numero>; | <variabile>=<variabile>;

<blocco> $\to$ {<assegnamento>} | {<assegnamento><blocco>}


Secondo voi così può andare?

Grazie
Avatar utente
Tipper
Cannot live without
Cannot live without
 
Messaggio: 499 di 5464
Iscritto il: 30/11/2004, 17:29

Messaggioda Tipper » 03/08/2006, 09:55

Chi tace acconsente? :-D
Avatar utente
Tipper
Cannot live without
Cannot live without
 
Messaggio: 500 di 5464
Iscritto il: 30/11/2004, 17:29

Messaggioda gigilatrottola » 03/08/2006, 10:23

chi tace nn ne ha un'idea o ha dato l'esame due anni fa :D
Avatar utente
gigilatrottola
Junior Member
Junior Member
 
Messaggio: 91 di 223
Iscritto il: 21/08/2005, 15:54


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite