Voglio creare una semplice applicazione di prova di concetto (REPL) che prende un numero e quindi elabora i comandi su quel numero.
Esempio: inizio con 1. Quindi scrivo " add 2
", mi dà 3. Quindi scrivo " multiply 7
", mi dà 21. Quindi voglio sapere se è primo, quindi scrivo " is prime
" (sul numero corrente - 21), mi dà falso. " is odd
" mi darebbe vero. E così via.
Ora, per una semplice applicazione con pochi comandi, anche una semplice switch
farebbe per l'elaborazione dei comandi. Ma se desidero l'estensibilità, come dovrei implementare la funzionalità? Uso il modello di comando? Costruisco un semplice parser / interprete per la lingua? E se volessi comandi più complessi, come " multiply 5 until >200
"? Quale sarebbe un modo semplice per estenderlo (aggiungere nuovi comandi) senza ricompilare?
Modifica: per chiarire alcune cose, il mio obiettivo finale non sarebbe quello di fare qualcosa di simile a WolframAlpha, ma piuttosto un processore di elenco (di numeri). Ma all'inizio voglio iniziare lentamente (su numeri singoli).
Sto pensando a qualcosa di simile al modo in cui uno userebbe Haskell per elaborare gli elenchi, ma una versione molto semplice. Mi chiedo se sarebbe sufficiente qualcosa come il modello di comando (o equivalente) o se devo realizzare un nuovo mini-linguaggio e un parser per raggiungere i miei obiettivi?
Edit2: Grazie per tutte le risposte, tutte mi sono state molto utili, ma Emmad Kareem mi ha aiutato di più, quindi lo sceglierò come risposta. Grazie ancora!