| Autore |
Discussione  |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 07/07/2006 : 19:13:49
|
Allegato: Gram.rar 2,41 KB
questo è quello che ho fatto io da una produzione BC>CB arriva produrre 4 produzioni: BC>CB(non sono riuscito a eliminarla, se qualcuno mi dice come si fa gliene sarei grato) BC>XC XC>XB XB>CB.
Purtroppo riesce a fare solo produzioni del tipo BC>CB (e non altre del tipo AB>CDEF).
io c'ho provato e questo è il mio lavoro non è granchè ma almeno abbiamo un punto d'inizio
|
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
|
|
ekkekkazz
Utente innocuo
 
|
Inserito il - 07/07/2006 : 19:56:43
|
Citazione: Messaggio inserito da silent
BC>CB(non sono riuscito a eliminarla, se qualcuno mi dice come si fa gliene sarei grato)
potresti fare così... non appena incontri una produzione monotona, nella int is_MonGrammar (Grammar* g)), potresti lanciare la funzione di conversione, e subito dopo rimuovi la produzione in base ad i. Mi sembra il modo più semplice, anche perchè se devi convertire una grammatica monotona, dovresti convertire tutte le produzioni di quel tipo. (voglio dire un'altra cosa: che succede se diamo in pasto al programma una grammatica CF che ha le parti sinistre minori di quelle destre? ecco perchè come dicevo nell'altro topic, non basta controllare che sia <= ).
|
 |
|
|
silent
Utente assiduo
  

Regione: Puglia
Prov.: Bari
Città: Andria
|
Inserito il - 07/07/2006 : 20:41:11
|
si ma la grammatica di tipo 1 non ingloba anche grammatiche di tipo 2 e 3 ?? quindi un linguaggio di tipo 2 può essere generato da una grammatica di tipo 1 (con l'esclusione di una prod. del tipo A>lambda)
Citazione:
non appena incontri una produzione monotona, nella int is_MonGrammar (Grammar* g)), potresti lanciare la funzione di conversione, e subito dopo rimuovi la produzione in base ad i. Mi sembra il modo più semplice, anche perchè se devi convertire una grammatica monotona, dovresti convertire tutte le produzioni di quel tipo.
potreati darmi una dimostrazione tramite un pezzo di codice
|
Rivoluzione? Rivoluzione? Per favore, non parlarmi tu di rivoluzione! Io so benissimo cosa sono e come cominciano: c'e qualcuno che sa leggere i libri che va da quelli che non sanno leggere i libri, che poi sono i poveracci, e gli dice: << Oh, oh, e' venuto il momento di cambiare tutto >> [...] Io so quello che dico, ci son cresciuto in mezzo, alle rivoluzioni. Quelli che leggono i libri vanno da quelli che non leggono i libri, i poveracci, e gli dicono: << Qui ci vuole un cambiamento! >> e la povera gente fa il cambiamento. E poi i piu' furbi di quelli che leggono i libri si siedono intorno a un tavolo, e parlano, parlano, e mangiano. Parlano e mangiano! E intanto che fine ha fatto la povera gente? Tutti morti! Ecco la tua rivoluzione! Quindi per favore, non parlarmi piu' di rivoluzione...E porca troia, lo sai che succede dopo? Niente...tutto torna come prima". Juan Miranda - Giù la testa - |
Modificato da - silent in data |
 |
|
|
ekkekkazz
Utente innocuo
 
|
Inserito il - 07/07/2006 : 21:49:45
|
Citazione: Messaggio inserito da silent
si ma la grammatica di tipo 1 non ingloba anche grammatiche di tipo 2 e 3 ?? quindi un linguaggio di tipo 2 può essere generato da una grammatica di tipo 1 (con l'esclusione di una prod. del tipo A>lambda)
però resta il fatto che non ha senso convertire una produzione libera, lineare o gia contestuale...
Citazione: Messaggio inserito da silent potreati darmi una dimostrazione tramite un pezzo di codice
int is_MonGrammar (Grammar* g) { int i; for (i=0; i < g->numprod; i++) if (is_MonProduction(&g->productions[i])) { converti(&g->productions[i])); rimuovi(g,i); // che rimuove la produzione di indice i dalla grammatica g } return 1; }
così non solo converte veramente tutte le produzioni monotone presenti nella grammatica, ma hai anche la possibilità di passare alla funzione rimuovi() l'indice... rimuovi la devi implementare... (io la funzione converti l'ho fatta con una Production come parametro, cioè la produzione monotona, mentre non so come si può fare se passi tutta la grammatica)
|
Modificato da - ekkekkazz in data |
 |
|
| |
Discussione  |
|
|
|