Quiero hacer una aplicación simple de prueba de concepto (REPL) que tome un número y luego procese comandos en ese número.
Ejemplo: empiezo con 1. Luego escribo " add 2
", me da 3. Luego escribo " multiply 7
", me da 21. Entonces quiero saber si es primo, entonces escribo " is prime
" (en el número actual - 21), me da falso. " is odd
" me daría la verdad. Y así.
Ahora, para una aplicación simple con pocos comandos, incluso un simple switch
serviría para procesar los comandos. Pero si quiero extensibilidad, ¿cómo necesitaría implementar la funcionalidad? ¿Utilizo el patrón de comando? ¿Construyo un analizador / intérprete simple para el idioma? ¿Qué sucede si quiero comandos más complejos, como " multiply 5 until >200
"? ¿Cuál sería una manera fácil de extenderlo (agregar nuevos comandos) sin volver a compilar?
Editar: para aclarar algunas cosas, mi objetivo final no sería hacer algo similar a WolframAlpha, sino más bien un procesador de listas (de números). Pero quiero comenzar lentamente al principio (en números individuales).
Tengo en mente algo similar a la forma en que uno usaría Haskell para procesar listas, pero una versión muy simple. Me pregunto si algo como el patrón de comando (o equivalente) sería suficiente, o si tengo que hacer un nuevo mini-idioma y un analizador para lograr mis objetivos.
Edit2: Gracias por todas las respuestas, todas me han sido de gran ayuda, pero Emmad Kareem me ha ayudado más, así que la elegiré como respuesta. ¡Gracias de nuevo!