[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