|
JediKnight
Maestro Jedi
   

Regione: Puglia
Prov.: ba
|
Inserito il - 01/02/2004 : 16:05:51
|
Allora,come detto nell'altro 3d, l'analisi sintattica mi funziona, ho problemi nell'analisi lessicale, e in particolare nell'uso del lookahead per non dover lasciare uno spazio tra i caratteri tipo (a+b) e non ( a + b )....Non so se l'idea sia giusta, ma il modello di uno scanner è pressochè uno,una serie di controlli if then e cicli,e cmq ho già detto che l'analisi funziona perfettamente lasciando almeno uno spazio tra i token ,quindi il probl è sicuramente nel gestire il lookahead ad ogni chiamata della gettoken..
Ciò che vorrei fare, è semplice:
Poichè la gettoken è chiamata dalle funzioni del parser, dovrebbe passarsi ogni volta la variabile globale "lookahead" in modo che ad ogni esame, si "ricordi" se ha letto un carattere in più, e se è così (lk!=0) mettere lk a 0 e non fare la getc.
In tal modo, dovrebbe servire al parser anche espressioni di tipo (a+b) e non solo ( a + b )
ho provato perciò a mettere una variabile globale lk:
int lk=0; dichiarazioni
a dichiarare la gettoken con
void gettoken (FILE *src,struct token *tok,int *lk,int max)
e in tale procedura:
void gettoken (FILE *src,struct token *tok,int *lk,int max) { ...........
if (trovato) { lk=1; istr in gettoken che crea l'errore ................ }
Nella compilazione, ad lk=1 mi viene segnalato l'errore:
Cannot convert 'int' to 'int *' errore compilatore
|
-"La Paura è la via per il Lato Oscuro: essa conduce all'ira, l'ira all'odio, l'odio porta alla sofferenza..."
"Impara a distaccarti, da ciò che temi di perdere"
"Più buio si fa, la tempesta forza prende...temo, che nell'oscura nube dei Sith tutti, avvolti saremo!"
|
|