Sono nuovo di Scala ma mi stavo chiedendo che è possibile implementare un parser di equazione semplice nella lingua.Scala - Creazione di un parser di funzioni dinamiche di base
Dire che ho un paio di funzioni (molto simile a funzioni di Excel):
IF(Cond a=b, val_true, val_false)
MID(String, Start_pos, num_chars)
- stringa estratto
LEN(String)
- lunghezza di una stringa
OR(cond1, cond2, ... condn)
AND(cond1, cond2, ... condn)
Quindi l'idea sarebbe ho potuto passare in una formula in fase di esecuzione come una stringa da un utente come un argomento che insieme ad altri params dicono IF(LEN(param1)=4,MID(param1,2,1), MID(param1,0,LEN(param1)))
L'idea è di valutare la funzione, quindi se la l'utente fornisce quella formula sopra e la stringa "scat", quindi l'output sarebbe "a". Se la stringa "scala" è stata data allora l'uscita sarebbe "scala" ...
Quanto sarebbe facile da implementare in Scala? Qual è il miglior approccio al design? So che non ci sono puntatori di funzione (in C avrei analizzato la stringa di formule in una raccolta di punti funzionali e passati da lì) ...
Sarebbe gradito qualsiasi consiglio su come affrontare questo in stile Scala efficiente.
Cheers!
Là _ sono_ l'equivalente dei puntatori di funzione, vale a dire i valori letterali delle funzioni anonime. –
L'idea sarebbe quella di passare la formula e poi fare cosa? Restituisce una funzione che implementa la formula, restituisce un oggetto che rappresenta l'espressione analizzata? – huynhjl
Siamo spiacenti, questo non è abbastanza chiaro. "Potrei passare in una formula": come? dove? in fase di esecuzione? al momento della compilazione? come codice sorgente? come stringa? e ti aspetti che succeda quando lo passi? Se fossi in te, riscriverei di nuovo l'intera domanda. –