Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 datemi addosso per l'ignoranza
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

krasta
Utente medio

Città: acquaviva


Inserito il - 09/04/2006 : 14:39:18  Mostra Profilo  Visita l'Homepage di krasta Invia a krasta un Messaggio Privato  Rispondi Quotando
ragazzi quale potrebbe essere una funzione in C per determinare se una grammatica è dipendente da contesto (basta controllare se è monotona e basta?)...grazie

emancipate yourself from mental slavery

ekkekkazz
Utente innocuo



Inserito il - 09/04/2006 : 18:08:17  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
una soluzione potrebbe essere questa:
oltre al controllo della monotonia, fare una iterazione per tutta la lunghezza della parte sinistra e verificare che esista un terminale; se questo esiste, controllare con un'altra iterazione annidata che esista lo stesso terminale anche nella parte destra, e quindi è context-sensitive... poi bisognerebbe fare un controllo per verificare che nella parte sinistra esista almeno un NT...
Torna all'inizio della Pagina

krasta
Utente medio

Città: acquaviva


Inserito il - 10/04/2006 : 13:58:22  Mostra Profilo  Visita l'Homepage di krasta Invia a krasta un Messaggio Privato  Rispondi Quotando
si ma il contesto come lo controllo ?

yAz -> ywz

il contesto y-z come lo controllo ?

emancipate yourself from mental slavery
Torna all'inizio della Pagina

ekkekkazz
Utente innocuo



Inserito il - 10/04/2006 : 17:32:45  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
in effetti la soluzione che ho dato io la possiamo buttare... y,z sono in (XuV)*, perciò possono essere anche lambda oppure aF o una qualsiasi forma di frase... il problema è proprio il riconoscimento dei contesti, o più che altro il riconoscimento di A in yAz -> ywz...
prendiamo una produzione BCD->BCe... dobbiamo trovare un modo per determinare la D, e ottenere che tutto il resto della stringa che sta a sinistra è y, e tutto quello a destra è z...
Quindi con un'iterazione per tutti i simboli della parola BCe, cercarsi il corrispondente in BCD... ci rimarranno soltanto la D e la 'e'...
quindi tutto quello a sinistra della D è y, tutto quello a destra è z...
controlliamo che y e z sono uguali a quelli di destra rispetto alla 'e'...

vediamo se riesco a combinare qualcosa col compilatore... poi c'è il problema delle lambda produzione... una cosa alla volta però...
Torna all'inizio della Pagina

ekkekkazz
Utente innocuo



Inserito il - 12/04/2006 : 01:50:01  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
ok, questa funzione funziona... praticamente estrae i contesti... ora per confrontarli avevo pensato a tipo due puntatori alla parte destra come nella palindrome (Caponetti, brrrr)



int find_context(Production *p, Symbol *y, Symbol *z)
{
int i,j,index[10],k=0;
index[0]=-1;



for (j=0;j<p->left.length;j++)
{ if (!exist_symbol(p->right,p->left.word[j]))
{

index[k++]=j;
}
}


int y_limit=min(index,k);
int z_limit=max(index,k);


if (index[0]==-1)
return 0;

for (j=0;j<y_limit;j++)
*(y++)=p->left.word[j];
*y='\0';



for (j=z_limit+1;j<p->right.length;j++)
*(z++)=p->left.word[j];
*z='\0';

return 1;

}

oh krasta auguri

Modificato da - ekkekkazz in data
Torna all'inizio della Pagina

peano
Utente medio

Prov.: Bari


Inserito il - 12/04/2006 : 09:57:03  Mostra Profilo  Visita l'Homepage di peano Invia a peano un Messaggio Privato  Rispondi Quotando
basta controllare la monotonia e stop..
Torna all'inizio della Pagina

ekkekkazz
Utente innocuo



Inserito il - 14/04/2006 : 00:29:30  Mostra Profilo  Visita l'Homepage di ekkekkazz Invia a ekkekkazz un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da peano

basta controllare la monotonia e stop..



ma non basta...
se io voglio distinguere una produzione lineare da una dipendente?
per esempio A->bC è monotona, però non è CS...
ok, vabene il teorema della gerarchia per cui L3 in L2 in L1, però qui non basta... la monotonia è una condizione necessaria ma non sufficiente.
Torna all'inizio della Pagina

Tak3z0
Nuovo Utente



Inserito il - 12/06/2006 : 10:17:57  Mostra Profilo  Visita l'Homepage di Tak3z0  Invia a Tak3z0 un messaggio ICQ Invia a Tak3z0 un Messaggio Privato  Rispondi Quotando
scusa ma e' un problema solo mio che non riesco a vedere tutta la codifica quando la si posta [vedi codifiche postate da fran]
credo manchi qualcosa tipo i controlli del while ad esempio ora non se e' un problema solo mio pls potreste uppere il file grazie assai ^^

Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,19 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000