| V I S U A L I Z Z A D I S C U S S I O N E |
| danandr |
Inserito il - 10/06/2004 : 09:10:41 Qualcuno ha svolto questo esercizio?
Costruire l'automa che riconosce identificatori che iniziano per lettera e siano seguiti da un numero qualunque di gruppi composti in maniera alternata da 2 cifre e 1 lettera
Se qualcuno l'ha svolto può scrivermi il frammento di linguaggio C?ho alcuni dubbi. Grazie |
| 20 U L T I M E R I S P O S T E (in alto le più recenti) |
| nicux |
Inserito il - 12/06/2004 : 16:30:54 Citazione: Messaggio inserito da danandr
scusste,ho apero i file di nicux ma...come si leggono i file .igx ????
igx è un estensione proprietaria di iGraphics Pro, ma non ti serve perchè di ogni sorgente c'è la copia in pdf |
| danandr |
Inserito il - 12/06/2004 : 15:14:18 scusste,ho apero i file di nicux ma...come si leggono i file .igx ???? |
| nicux |
Inserito il - 12/06/2004 : 12:52:00 gabri... ancora con sti if if if if if ...  |
| Gabri |
Inserito il - 12/06/2004 : 12:38:53 Riconosce lettere seguite da un gruppo qualcsiasi di 2 cifre e una lettera.
While (car!= EOF) { if (!lookahead) car=getc(); else lookahead =0; if (isalpha (car) {word[i]=car;I++;car=getc();} do{ if(isdigit(car){ word[i]=car;I++;car=getc(); if(isdigit(car){ word[i]=car;I++;car=getc(); if(isalpha(car) {word[i]=car;I++;car=getc();} else printf(‘errore-richiesta lettera’);} else printf(‘errore-richiesta cifra’);} else {word[i]=’\0’; lookahead=1;} } while (!lookahead)} |
| nicux |
Inserito il - 12/06/2004 : 11:40:52 Citazione: Messaggio inserito da fabbattista Non sono cattivo come cathalle non volevo dire di non rompere. Solo di spostarci nell'altra discussione piu' attinente. Ma sei permaloso!  
Una domanda sull'allegato. Forse mi sono perso qualcosa, ma l'automa non doveva riconoscere stringhe che iniziao con una lettera ed eventualmente sono seguite da gruppi ditre (lettere e cifre)? Nel tuo codice ho visto che si transita da Q1 a Q2 legendo il carattere di sottolineautura. Errore tuo o m sono perso qualche messaggio?
Invece quello che si trova nella sezione download è uno spettacolo. La documentazione che chiunque vorrebbe ricevere, un codice commentato e ben fatto. Dove lo hai trovato?   
- no, non sono permaloso, ho uno humor un po' ermetico   
- ops... con tutte queste discussioni sugli automi forse ho fatto confusione, cmq vale l'ultima cosa cioè la tecnica con cui disbrigare la pratica tiny-analisi lessicale...
- dove l'ho trovata????  però grazie dell'approvazione, è nella sez. download da un sacco di tempo, l'ho ceduta nella speranza che qualcuno la completasse (manca tutta la semantica, e la tabella dei simboli), ma da quello che vedo il dib sta via via ridimensionando le sue pretese... sigh |
| fabbattista |
Inserito il - 12/06/2004 : 10:18:52 Citazione:
per farmi perdonare da fabba (che in modo estremamente elegante mi ha esortato a non rompere...), voglio dare un mio modesto contributo alla causa:
Non sono cattivo come cathalle non volevo dire di non rompere. Solo di spostarci nell'altra discussione piu' attinente. Ma sei permaloso!  
Una domanda sull'allegato. Forse mi sono perso qualcosa, ma l'automa non doveva riconoscere stringhe che iniziao con una lettera ed eventualmente sono seguite da gruppi ditre (lettere e cifre)? Nel tuo codice ho visto che si transita da Q1 a Q2 legendo il carattere di sottolineautura. Errore tuo o m sono perso qualche messaggio?
Invece quello che si trova nella sezione download è uno spettacolo. La documentazione che chiunque vorrebbe ricevere, un codice commentato e ben fatto. Dove lo hai trovato?    |
| Cathàll |
Inserito il - 12/06/2004 : 01:56:31 Citazione: Messaggio inserito da nicux ciaux
Nicux, hai rotto.  |
| nicux |
Inserito il - 12/06/2004 : 00:35:31 Citazione: Messaggio inserito da fabbattista
Il tu dovreste darmelo tutti. In genere nei forum, nelle chat e simili si usa il tu.
In ogni caso, per non disturbare questa discussione che riguarda gli automi, nella discussione che ho attivato io, ma solo per poco tempo (poi spero ci siano domande inerenti il corso) possiamo chiacchierare del piu' e del meno.
per farmi perdonare da fabba (che in modo estremamente elegante mi ha esortato a non rompere...), voglio dare un mio modesto contributo alla causa:
Allegato: funz_automa.txt 2,41 KB
frammento di programma che implementa l'automa di cui sopra (fatto da me oggi per una amica a cui voglio bene), non ho provato a compilarlo quindi potrebbero esserci errori sintattici, ma quello che volevo evidenziare era la tecnica implementativa...
se invece volete fare i fighi e tentare di stupire i vostri esaminatori (non è facile riuscirci, però) potete scaricarvi lo zippone che trovate a questo indirizzo: http://www.laureateci.it/forum/filelibrary.asp alla voce "compilatore", autore "nicux" (sempre lui, quello che rompe!)
lì dentro trovate: 1)un FSA guidato da tabella (in cui ovviamente implemento la tabella guida, l'automa è simpatico perchè riconosce i numeri binari divisibili per tre)
2)un automa a pila (implementato pari pari) che data una stringa stampa tutte le produzioni a partire dall'assioma (simpatico e soprattutto atipico)
3)un bello scanner+parser(ricorsivo discendente) con gestione degli errori sintattici che analizza codice tiny html+ script tinyphp
4)documentazione di tutti i punti da 1 a 3
5)allegato in cui si mostra l'algoritmo per convertire un FSA in espressione regolare prendendo ad esempio l'FSA di cui sopra.
spero di essere stato utile e di aver pagato i proverbiali cocci.
ciaux
|
| fabbattista |
Inserito il - 11/06/2004 : 21:32:29 Il tu dovreste darmelo tutti. In genere nei forum, nelle chat e simili si usa il tu.
In ogni caso, per non disturbare questa discussione che riguarda gli automi, nella discussione che ho attivato io, ma solo per poco tempo (poi spero ci siano domande inerenti il corso) possiamo chiacchierare del piu' e del meno. |
| nicux |
Inserito il - 11/06/2004 : 18:56:00 il risentimento non è nel mio vocabolario, il tu era una metafora 
ma pure io posso darti del tu? |
| fabbattista |
Inserito il - 11/06/2004 : 18:51:47 Ti chiedo scusa per la spinta, ma giuro che non è stata volontaria.
Anche se abbiamo perso, comunque non ci siamo ancora arresi.
Un piacere, almeno sul sito e in campo dammi del tu (meglio sempre comunque), se no poi Nicux si risente |
| nicux |
Inserito il - 11/06/2004 : 18:44:04 come sei diplomatico chila, se ti avessi spinto io non mi avresti dato del lei . |
| Chilavert |
Inserito il - 11/06/2004 : 16:35:21 Citazione: Messaggio inserito da fabbattista
Se vi interessano le tracce degli appelli precedenti, provate al sito http://valis.di.uniba.it
a sinistra seguite il link linguaggi di programmazione. Trovate gli appelli, le tracce e in futuro le dispense.
Grazie per le dritte... ...però prof, (ammesso che sia lei, anche se sembrerebbe così) me la pagherà per avermi spinto vicino alla rete durante l'ultima partita! scherzo, però devo dire che non è niente male come calciatore! |
| fabbattista |
Inserito il - 11/06/2004 : 16:26:09 Se vi interessano le tracce degli appelli precedenti, provate al sito http://valis.di.uniba.it
a sinistra seguite il link linguaggi di programmazione. Trovate gli appelli, le tracce e in futuro le dispense. |
| Cathàll |
Inserito il - 11/06/2004 : 00:17:42 Citazione: Messaggio inserito da danandr
Allora. La traccia non è proprio quella all'inizio, ti ho scritto che è molto simile. In genere variano i gruppetti di lettere e il modo in cui questi sono composti.
Per quanto riguarda il terminatore, fa sempre parte di tutte quelle cose che devi premettere tu, per semplificarti il compito di realizzazione. Scrivi qualcosa tipo "Aggiungiamo all'alfabeto di input anche il carattere #, che andrà ad indicare la fine dell'identificatore"
Infine, le variabili: Il fatto di farlo scritto invece che al laboratorio semplifica molto la cosa. Al massimo parla discorsivamente della "struct token" e scrivi come funziona la getchar() e dichiara soltanto le varabili strettamente necessarie (tipo CHAR). |
| Cathàll |
Inserito il - 11/06/2004 : 00:13:33 Citazione: Messaggio inserito da danandr
ragazzi mi sapete dire se questo frammento di codice per il riconoscimento dei commeni sta bene?sto impazzendo per riuscire a trovarlo:
Senti, io modificherei la parte del ciclo Dopo aver trovato /* io farei
[lo scrivo in pseudolinguaggio]
while (finecommento==0) getchar if char = "*" getchar if char = "/" lookahead = 1 (ma non è indispensabile) finecommento=1 R
Perchè finecommento funziona da sentinella. Inizia il ciclo in cui lui prende tutto ciò che c'è dentro, facendo attenzione solo alla combinazione */
Ma non ci metto la mano sul fuoco (Non mi va di andare a ricontrollare il mio codice )
|
| danandr |
Inserito il - 10/06/2004 : 20:20:53 ve lo allego,forse ci capirete qualcosa di+
Allegato: Commenti.txt 1,06 KB |
| danandr |
Inserito il - 10/06/2004 : 20:18:29 ragazzi mi sapete dire se questo frammento di codice per il riconoscimento dei commeni sta bene?sto impazzendo per riuscire a trovarlo: ------------------------------------------------------------------------------------- FineCommento=0; //Variabile che risulta vero se si arriva a fine commento,falsa //altrimenti
if (car=='/') { if ((car=getc(FileSorgente))=='*') { while (!FineCommento) { while ((car=getc(FileSorgente))!='*'); while ((car=getc(FileSorgente))=='*'); if (car=='/') { lookahead=0; FineCommento=1; return; } } } else { printf("Errore: dopo '/' deve esserci '*' "); return 0; } } ----------------------------------------------------------------- |
| Gabri |
Inserito il - 10/06/2004 : 17:22:09
io ho provato a fare questo esercizio secondo voi è giusto come l'ho svolto??????????sia il codice ma anche per quanto riguarda il"progetto" che non so come cavolo si fa....
fatemi sapere al piu presto se trovate degli errori perpiacere Allegato: Nuovo Archivio WinRAR.rar 6,04 KB |
| danandr |
Inserito il - 10/06/2004 : 16:11:32 Cathall ti ringrazio molto per la tua disponibilità,sei stato molto kiaro.Usufruisco ancora un po' della tua disponibilità. praticamente,da quanto mi fai capire,la tua traccia è quella che ho riportato all'inizio di questa discussione,nn te ne sei accorto?Ma se è quella,perchè hai parlato di termiantore (#) ? Cmq,nel caso nn siano previsti terminatori nella traccia,puoi imporne tu uno?e quindi inserirlo nell'alfabeto di ingresso? Dubbio:se nel mio alfabeto della traccia sopra pongo solo lettere e cifre,l'identificatore che deve finire con una lettera cosa deve trovare dopo?nn può trovare uno spazio perchè nn l'ho previsto nell'alfabeto? Quando parli di sentinella,intendi per esempio l'espressione contenuta nella condizione del ciclo while? Ultima domanda:hia dichiarato le variabili che hai utilizzato?per esempio car, lookahead, i, word ecc. ? ti ringrazio ancora |