[Tech] domandina di c/c++

Franco Bagnoli franco.bagnoli@unifi.it
Gio 6 Apr 2006 21:54:39 CEST


Marco Calviani ha scritto:

> 
> come faccio a trasformare l'informazione della stringa in un double
> (se si puo' fare!)?
> 
> Scusatemi se la domanda e' stupida,
> grazie,

come ti è stato detto, ci sono tante soluzioni:

1) compilare al volo il frammento di C, generare una libreria dinamica e 
caricarla al volo. E' quanto fa il modulo Inline del perl, che permette 
(dentro il perl) di scrivere un pezzo di C (o di quasi qualsiasi 
linguaggio), compilarlo al volo, fare il cache e usarlo. Se e già 
compilato automaticamente lo ricompila. L'idea è la seguente: prepari 
uno script per  compilare/caricare la libreria dinamica, che includa il 
file contenente la funzione voluta. Da C ti basta copiare la definizione 
della funzione nel file giusto e lanciare lo script.

2) implementare un parser. Abbastanza semplice se usi la notazione 
polacca inversa (tipo postscript per intenderci)

x 3 + sin  == sin(3+x)

è un classico esercizio di programmazione (scrittura di una 
calcolatrice). Io non lo farei. Comunque cerca "c eval" su google, e 
buona fortuna

3) usa un linguaggio "interpretato" tipo il perl (o matlab, se è per 
questo). In questo caso è banale, basta fare un eval della stringa e hai 
la funzione "parsata".
  Dipende che ci devi fare e quanto cambi la funzione, se deve essere 
integrato in un ambiente già esistente, ecc.

4) usa il parser di un linguaggio "interpretato" tipo il perl: chiami il 
perl dal C/C++ e fai l'eval, e poi usi la funzione tramite chiamate al 
perl. Più facile di quanto sembri.


-- 
Franco Bagnoli <franco.bagnoli@unifi.it>
Dipartimento di Energetica & Centro Dinamiche Complesse
Universita' di Firenze, via S. Marta, 3 I-50139 Firenze, Italy.
Tel. +39 0554796592, fax: +39 0554796342



Maggiori informazioni sulla lista flug-tech