Ich möchte eine einfache Proof-of-Concept-Anwendung (REPL) erstellen, die eine Nummer akzeptiert und dann Befehle für diese Nummer verarbeitet.
Beispiel: Ich beginne mit 1. Dann schreibe ich " add 2
", es gibt mir 3. Dann schreibe ich " multiply 7
", es gibt mir 21. Dann möchte ich wissen, ob es eine Primzahl ist, also schreibe ich " is prime
" (auf die aktuelle Zahl - 21), es gibt mir falsch. " is odd
" würde mir wahr geben. Und so weiter.
Für eine einfache Anwendung mit wenigen Befehlen switch
würde sogar eine einfache Anwendung zur Verarbeitung der Befehle ausreichen. Aber wenn ich Erweiterbarkeit möchte, wie müsste ich die Funktionalität implementieren? Benutze ich das Befehlsmuster? Erstelle ich einen einfachen Parser / Interpreter für die Sprache? Was ist, wenn ich komplexere Befehle wie " multiply 5 until >200
" möchte ? Was wäre eine einfache Möglichkeit, es zu erweitern (neue Befehle hinzuzufügen), ohne es neu zu kompilieren?
Bearbeiten: Um ein paar Dinge zu klären, wäre mein Endziel nicht, etwas Ähnliches wie WolframAlpha zu machen, sondern einen Listenprozessor (von Zahlen). Aber ich möchte zuerst langsam anfangen (mit einzelnen Zahlen).
Ich denke an etwas Ähnliches wie an Haskell, um Listen zu verarbeiten, aber an eine sehr einfache Version. Ich frage mich, ob so etwas wie das Befehlsmuster (oder ein gleichwertiges Muster) ausreichen würde oder ob ich eine neue Minisprache und einen Parser erstellen muss, um meine Ziele zu erreichen.
Edit2: Danke für all die Antworten, alle waren sehr hilfreich für mich, aber Emmad Kareem hat mir am meisten geholfen, also werde ich es als Antwort wählen. Danke noch einmal!