Desejo criar um aplicativo simples de prova de conceito (REPL) que use um número e depois processe comandos nesse número.
Exemplo: eu começo com 1. Então eu escrevo " add 2
", ele me fornece 3. Então eu escrevo " multiply 7
", ele me fornece 21. Então eu quero saber se é primo, então eu escrevo " is prime
" (no número atual - 21), isso me dá falso. " is odd
" me daria verdade. E assim por diante.
Agora, para um aplicativo simples com poucos comandos, até um simples switch
seria o processamento dos comandos. Mas se eu quiser extensibilidade, como precisaria implementar a funcionalidade? Eu uso o padrão de comando? Construo um analisador / intérprete simples para o idioma? E se eu quiser comandos mais complexos, como " multiply 5 until >200
"? Qual seria uma maneira fácil de estendê-lo (adicionar novos comandos) sem recompilar?
Edit: para esclarecer algumas coisas, meu objetivo final não seria fazer algo semelhante ao WolframAlpha, mas sim um processador de lista (de números). Mas quero começar devagar no início (em números únicos).
Estou pensando em algo semelhante ao modo como alguém usaria o Haskell para processar listas, mas uma versão muito simples. Eu estou querendo saber se algo como o padrão de comando (ou equivalente) seria suficiente, ou se eu tenho que criar uma nova minilinguagem e um analisador para que ele atinja meus objetivos?
Edit2: Obrigado por todas as respostas, todas têm sido muito úteis para mim, mas o Emmad Kareem me ajudou mais, por isso vou escolher como resposta. Obrigado novamente!