Je veux créer une application simple de preuve de concept (REPL) qui prend un nombre et traite ensuite les commandes sur ce nombre.
Exemple: je commence par 1. Ensuite j'écris " add 2
", ça me donne 3. Puis j'écris " multiply 7
", ça me donne 21. Ensuite je veux savoir si c'est premier, alors j'écris " is prime
" (sur le nombre courant - 21), cela me donne de faux. " is odd
" me donnerait raison. Etc.
Maintenant, pour une application simple avec peu de commandes, même une simple switch
suffirait pour le traitement des commandes. Mais si je veux une extensibilité, comment aurais-je besoin d'implémenter la fonctionnalité? Dois-je utiliser le modèle de commande? Dois-je créer un analyseur / interprète simple pour la langue? Et si je veux des commandes plus complexes, comme " multiply 5 until >200
"? Quel serait un moyen simple de l'étendre (ajouter de nouvelles commandes) sans recompiler?
Edit: pour clarifier certaines choses, mon objectif final ne serait pas de faire quelque chose de similaire à WolframAlpha, mais plutôt un processeur de liste (de nombres). Mais je veux commencer lentement au début (sur des numéros simples).
Je pense à quelque chose de similaire à la façon dont on utiliserait Haskell pour traiter les listes, mais une version très simple. Je me demande si quelque chose comme le modèle de commande (ou équivalent) suffirait, ou si je dois créer un nouveau mini-langage et un analyseur pour qu'il atteigne mes objectifs?
Edit2: Merci pour toutes les réponses, toutes m'ont été très utiles, mais celles d'Emmad Kareem m'ont le plus aidé, alors je vais le choisir comme réponse. Merci encore!