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
 Ma viene accettato un compilatore che necessita...

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
Tano Inserito il - 03/07/2003 : 17:11:13
Viene accettato un compilatore che necessita i token separati da spazi? Per mancanza di tempo (e sopratutto per le risposte non ricevute da Ferilli) non riesco a trovare una soluzione per non far separare i token dagli spazi.. Qualcuno di voi ha qualche idea?


Grazie
6   U L T I M E    R I S P O S T E    (in alto le più recenti)
Tano Inserito il - 04/07/2003 : 12:35:34
E poi scusa quella funzione che mi hai dato non si ferma quando trova un carattere diverso da "a..Z", si ferma solo quando trova uno spazio o quando i raggiunge 255 ..

E' praticamente la stessa funzione che ho implementato io.. UFF a me non importa se mi abbassa il voto, l'importante è che me lo accetti e mando a fare in culo sto esame..
Tano Inserito il - 04/07/2003 : 12:24:35
Ho mandato una email a ferilli.. speriamo risponda.. Io potrei pure implementarla, mi SONO ROTTO LA BALLE di sto cazz di compilatore.. Voglio solo documentare.. E poi dai, è una cavolata il fatto degli spazi, manco fosse quello il fulcro del compilatore -_- .
Dreamhell Inserito il - 04/07/2003 : 02:07:49
mi sà che non te lo accetta!
Paioneer ha ragione a dire che la scansione dovrebbe essere fatta carattere per carattere settando la variabile lookahead.
forse ti può servire questa funzione che si ferma non solo quando trova gli spazi, ma anche la punteggiatura in generale:


void leggi_stringa(FILE *f, char s[MAX])
{
int i=0;
char caract;

caract=fgetc(f);
while(!isspace(caract) && i <= 255 && caract != EOF){
s[i] = caract;
i++;
caract = fgetc(f);
}

s[i] = '\0';
}
Tano Inserito il - 04/07/2003 : 00:47:07
Non è un problema legato alla risoluzione degli spazi è che Ferilli ci ha dato delle dispense sulle quali la funzione Gettoken mette in un vettore di caratteri tutti i token separati da spazio. Se faccio carattereper carattere, non ho problemi, ma oramai ho deciso di seguire il filo delle dispense e non posso buttare nel cesso tutto quello che ho fatto fino ad ora. Del resto il compilatore funziona perfettamente, con l'unico problema che accetta solo token separati da spazio.. Non vorrei che per questa piccola cazzata non mi accetti il progetto. Io documento tutto, è chiaro...
paioner Inserito il - 03/07/2003 : 21:00:57
Comunque Ferilli ha detto che possiamo prendere qualsiasi decisione purchè sia motivata e DOCUMENTATA!
Quindi tocca a te decidere!
paioner Inserito il - 03/07/2003 : 20:58:25
Credo ke il problema sia:
come faccio a riconoscere a:=10+b;
in: a := 10 + b ;
se sono tutti attaccati?

la risposta è:
inizio la scansione e trovo a, siccome è un carattere o è una keyword oppure in identif (in breve KEY o ID). Quindi continuo per leggere tutta la parola.
Poi trovo : allora capisco ke la parola è finita e setto lookahead a true perchè ho letto i : ma non li ho usati e restituisco la stringa "a" che devo decidere se è una key o un id.
a questo punto leggo i : e lo scanner dovrebbe procedere leggendo = e riconoscendo l'operatore := si ferma restituendo appunto :=
Poi lo scanner legge 1 e deve continuare a leggere tutti i numeri, cosi dopo aver letto lo 0 trova il +
Adesso si ferma, setta lookahead a true (per lostesso motivo di prima) e restituisce 10 dicendo che è un intero.
Poi legge e riconosce il + come operatore.
Poi legge b, trova ; e capisce che la stringa è finita e restituisce la parola b dovendo poi decidere se è key o id.
infine legge e riconosce ;


come vedi non sono necessari gli spazi tra i token, perchè se devo riconoscere un intero, quando trovo qualcosa ke non è una cifra mi posso fermare. Se sto riconoscendo un id, quando trovo un operatore, o generalmente qualcosa che non fa parte della struttura di un id mi fermo, mentre + - * e altri operatori sono riconosciuti immediatamente.

Spero di essere stato chiaro.
Ciao

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,06 secondi.

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