Nota: Devi essere registrato per poter inserire un messaggio. Per registrarti, clicca qui. La Registrazione è semplice e gratuita!
V I S U A L I Z Z A D I S C U S S I O N E
JediKnight
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:
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
1 U L T I M E R I S P O S T E (in alto le più recenti)
Antonio
Inserito il - 01/02/2004 : 16:24:15 Ti da' errore perchè "lk" lo hai dichiarato "puntatore ad intero"; per questo motivo dovresti fare "*lk=1" e non "lk=1".