| V I S U A L I Z Z A D I S C U S S I O N E |
| Chilavert |
Inserito il - 12/06/2004 : 10:55:00 Ho visto quello che "dovrebbe essere" l'automa che riconosce i commenti ed anche il simbolo di diviso "/"... ...bhè, sarò io scemo, però... seconde me non riconosce i commenti con un numero dispari di asterischi! L'ho rifatto, ditemi cosa ne pensate e smentitemi se ce n'è bisogno!

e questo è il relatico codice C: /Public/data/Chilavert/2004612105426_commenti.txt |
| 20 U L T I M E R I S P O S T E (in alto le più recenti) |
| fabbattista |
Inserito il - 12/06/2004 : 17:30:30 Citazione: Messaggio inserito da zipang
DUBBIO: Durante il corso di linguaggi di quest'anno,per ciò che riguarda l'argomaneto "analisi lessicale",e specialmente l'implemtentazione in C degli automi, il prof Abbattista e il prof Ferilli hanno dato due modi molto diversi di implementare un automa
Dubbio piu' che legittimo. Dovessi correggerli io ti risponderei che non è influente. Siccome li corregge Ferilli vi consiglio di seguire la sua implementazione. Comunque lunedi provo a contattarlo e chiedo a lui. Appena ho notizie vi aggiorno |
| nicux |
Inserito il - 12/06/2004 : 17:24:29 Citazione: Messaggio inserito da julio.cruz
scusa nicux sei del corso A?
no, perchè? |
| julio.cruz |
Inserito il - 12/06/2004 : 16:48:23 scusa nicux sei del corso A? |
| nicux |
Inserito il - 12/06/2004 : 16:26:11 Citazione: Messaggio inserito da zipang
Salve a tutti!!! DOMANDA: Nella libreria stdio.h del C è presente una funzione , ungetc(int car,FILE*f), che reimmette nel flusso f il carattere car;questa funzione si può abbinare a getc(FILE*f) in modo tale che,se un carattere acquisitao dal file non serve,si può riportare nel file mediante la funzione ungetc...la domanda è questa:è un buon metodo l'utilizzo di queste due funzioni abbinate invece del flag "lookhaead"??
non conosco la ungetc ma secondo me è poco efficiente, perchè rimuovere il char dal buffer per poi rimettercelo? ricorda che accesso al file=accesso al disco...
riguardo allo schema di cui sopra ecco il link: http://www.laureateci.it/Public/data/nicux/200461202034_funz_automa.txt apritelo con il borland, sarà più leggibile... |
| zipang |
Inserito il - 12/06/2004 : 15:17:02 DUBBIO: Durante il corso di linguaggi di quest'anno,per ciò che riguarda l'argomaneto "analisi lessicale",e specialmente l'implemtentazione in C degli automi, il prof Abbattista e il prof Ferilli hanno dato due modi molto diversi di implementare un automa in linguaggio C:se il prof Abba(scusate l'abbrezviazione,ma è "musicale")ha utilizzato gli stati e uno switch,prima sugli stati poi sul carattere in input,il prof Ferilli invece ha utilizzato soltanto i vari costrutti di controllo(if while do-while)...vorrei sapere se, in ambito di esame, questi due approcci verrebbero valutate allo stesso modo. GRAZIE A TUTTI DELLA PAZIENZA!!!CIRICIAO!!! |
| zipang |
Inserito il - 12/06/2004 : 15:12:48 Salve a tutti!!! DOMANDA: Nella libreria stdio.h del C è presente una funzione , ungetc(int car,FILE*f), che reimmette nel flusso f il carattere car;questa funzione si può abbinare a getc(FILE*f) in modo tale che,se un carattere acquisitao dal file non serve,si può riportare nel file mediante la funzione ungetc...la domanda è questa:è un buon metodo l'utilizzo di queste due funzioni abbinate invece del flag "lookhaead"?? |
| Sinkler |
Inserito il - 12/06/2004 : 14:56:38 Nico lo invii anche a me??? |
| danandr |
Inserito il - 12/06/2004 : 14:51:20 Citazione: Messaggio inserito da nicux
Citazione: Messaggio inserito da Gabri
io l'ho fatto cosi questo automa...secondo voi va bene?! .While (car!=EOF) {if (!lookahead) car =getc(); else lookahead=0; if (car==’\’){ word[i]=car;I++;car=getc();} if (car==’*’) {word[i]=car;I++;car=getc();} do{ while (car!=’*’) {word[i]=car;I++;car=getc();} if (car == ‘*’) { word[i]=car;I++;car=getc(); if (car==’\’){ word[i]=car;I++;word[i]=’\0’;lookahead=1;}; } while (!lookahead)}
LMBP...
ti ho inviato un frammento di codice che rappresenta uno schema implementativo che è sempre lo stesso qualunque sia l'automa... prima disegnati l'automa e dopo applica lo schema che ti ho inviato su quello che hai disegnato...
quello che hai scritto può darsi che funzioni, anzi è probabile ma si legge con fatica e poi se cambi automa non riusi niente, insomma è un casino sia per te a scriverlo che per il docente a leggerlo.
Prendi spunto anche dal codice di chila che è pulito, essenziale e soprattutto a colpo d'occhio capisci che si tratta di un automa e quanti stati ha.
se ti eserciti assimilando questo metodo un bel po' di codice lo scriverai ad occhi chiusi perchè è ripetitivo e strutturato.
dai mè...datti da fare, basta con gli if if if if
inviersti anche a me lo schema implementativo???Anch'io uso gli if continuamente,daltronde è quello il metoto che ci è stato fatto vedere in aula da ferilli |
| nicux |
Inserito il - 12/06/2004 : 13:04:14 Citazione: Messaggio inserito da Gabri
io l'ho fatto cosi questo automa...secondo voi va bene?! .While (car!=EOF) {if (!lookahead) car =getc(); else lookahead=0; if (car==’\’){ word[i]=car;I++;car=getc();} if (car==’*’) {word[i]=car;I++;car=getc();} do{ while (car!=’*’) {word[i]=car;I++;car=getc();} if (car == ‘*’) { word[i]=car;I++;car=getc(); if (car==’\’){ word[i]=car;I++;word[i]=’\0’;lookahead=1;}; } while (!lookahead)}
LMBP...
ti ho inviato un frammento di codice che rappresenta uno schema implementativo che è sempre lo stesso qualunque sia l'automa... prima disegnati l'automa e dopo applica lo schema che ti ho inviato su quello che hai disegnato...
quello che hai scritto può darsi che funzioni, anzi è probabile ma si legge con fatica e poi se cambi automa non riusi niente, insomma è un casino sia per te a scriverlo che per il docente a leggerlo.
Prendi spunto anche dal codice di chila che è pulito, essenziale e soprattutto a colpo d'occhio capisci che si tratta di un automa e quanti stati ha.
se ti eserciti assimilando questo metodo un bel po' di codice lo scriverai ad occhi chiusi perchè è ripetitivo e strutturato.
dai mè...datti da fare, basta con gli if if if if |
| Gabri |
Inserito il - 12/06/2004 : 12:34:56 io l'ho fatto cosi questo automa...secondo voi va bene?! .While (car!=EOF) {if (!lookahead) car =getc(); else lookahead=0; if (car==’\’){ word[i]=car;I++;car=getc();} if (car==’*’) {word[i]=car;I++;car=getc();} do{ while (car!=’*’) {word[i]=car;I++;car=getc();} if (car == ‘*’) { word[i]=car;I++;car=getc(); if (car==’\’){ word[i]=car;I++;word[i]=’\0’;lookahead=1;}; } while (!lookahead)}
|
| nicux |
Inserito il - 12/06/2004 : 12:12:45 sono daccordo, la traccia chiede un'altra cosa.
io infatti,volevo solo mettere in evidenza che un automa che riconosce i commenti può essere realizzato anche così, peraltro la stringa vuota è sintatticamente corretta per uno scanner di cui q0 potrebbe essere l'ingresso.
sono anche d'accordo sul fatto che all'esame bisogna essere pragmatici, ma a casa la vita bisogna complicarsela un po', se no che gusto c'è? |
| fabbattista |
Inserito il - 12/06/2004 : 12:01:51 Citazione: Messaggio inserito da nicux
l'automa di chila è ok!
ma io utilizzerei meno stadi, ad esempio
q0 (finale) -> q1 via /
La scelta di q0 finale non mi sembra adatta. In quel modo l'automa riconosce anche le stringhe vuote, e non credo fosse nelle intenzioni dell'autore della traccia |
| Chilavert |
Inserito il - 12/06/2004 : 12:00:39 MADDAI! |
| fabbattista |
Inserito il - 12/06/2004 : 11:59:07 [quote no no, è proprio un numero dispari... provare per credere! [/quote]
Forse abbiamo tracce diverse o anche io sono in andropausa. Cerco di venire alla prossima vostra partita cosi' confrontiamo le tracce (e magari ti distraggo e perdete)  |
| fabbattista |
Inserito il - 12/06/2004 : 11:57:26 Citazione: Messaggio inserito da Chilavert
allora, la traccia diceva di progettare quest'automa, con quei due stati finali là Quindi riconosce anche il solo /, e non è un errore In sede d'esame penso che metterò solo le cose importanti e molti molti commenti
Questo è un suggerimento che tutti dovrebbero seguire. I dettagli o le aggiunte fatele solo dopo aver risolto le cose importanti. |
| nicux |
Inserito il - 12/06/2004 : 11:37:04 Citazione: Messaggio inserito da Chilavert
allora, la traccia diceva di progettare quest'automa, con quei due stati finali là Quindi riconosce anche il solo /, e non è un errore In sede d'esame penso che metterò solo le cose importanti e molti molti commenti
il motivo per cui f1 è finale sta nella possibile integrazione all'interno di un automa più grande che utilizza / come operatore. Del resto questi piccoli automi sono tutti pezzettini di scanner di interi linguaggi |
| nicux |
Inserito il - 12/06/2004 : 11:33:59 l'automa di chila è ok!
ma io utilizzerei meno stadi, ad esempio
q0 (finale) -> q1 via / q1-> q2 via * q2 -> q2 via X-{*} q2 -> q3 via * q3 -> q2 via X-{/} q3 -> q0 via /
invece con lo stesso numero di stadi gestirei anche i commenti a singola riga del tipo //, ad esempio aggiungendo al precedente:
q1->q4 via / q4->q4 via X q4->q0 via eoln
|
| Chilavert |
Inserito il - 12/06/2004 : 11:29:05 Citazione: Messaggio inserito da fabbattista
Hai quasi ragione. In realtà l'automa dato alla prova di laboratorio non riconosceva i commenti con un numero pari di asterischi.
I miei complimenti
no no, è proprio un numero dispari... provare per credere! |
| Chilavert |
Inserito il - 12/06/2004 : 11:04:43 allora, la traccia diceva di progettare quest'automa, con quei due stati finali là Quindi riconosce anche il solo /, e non è un errore In sede d'esame penso che metterò solo le cose importanti e molti molti commenti |
| fabbattista |
Inserito il - 12/06/2004 : 11:04:03 Hai quasi ragione. In realtà l'automa dato alla prova di laboratorio non riconosceva i commenti con un numero pari di asterischi.
I miei complimenti |