Voglio creare una semplice applicazione proof-of-concept (REPL) che accetta un numero e quindi elabora i comandi su quel numero.
Esempio:
Comincio con 1. Quindi scrivo " add 2
", mi dà 3. Quindi scrivo " multiply 7
", mi dà 21. Poi voglio sapere se è primo, quindi scrivo " is prime
"(sul numero corrente - 21), mi dà il falso. " is odd
" mi darebbe la verità. E così via.
Ora, per una semplice applicazione con pochi comandi, anche un semplice switch
lo farebbe per elaborare i comandi. Ma se voglio estensibilità, come avrei bisogno di implementare la funzionalità? Devo usare lo schema di comando? Costruisco un semplice parser / interprete per la lingua? Cosa succede se voglio 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 creare qualcosa di simile a WolframAlpha, ma piuttosto un processore di lista (di numeri). Ma voglio iniziare lentamente all'inizio (su singoli numeri).
Ho in mente qualcosa di simile al modo in cui si userebbe Haskell per elaborare le liste, ma una versione molto semplice. Mi chiedo se sarebbe sufficiente qualcosa come lo schema di comando (o equivalente), o se dovessi creare un nuovo mini-linguaggio e un parser per raggiungere i miei obiettivi?
Edit2: Grazie per tutte le risposte, mi sono state di grande aiuto, ma Emmad Kareem mi ha aiutato di più, quindi la sceglierò come risposta. Grazie ancora!