Implementiere einen Evaluator für eine sehr einfache Teilmenge von Forth.
Forth ist eine stapelbasierte Programmiersprache. Implementiere einen sehr einfachen Evaluator für eine kleine Teilmenge von Forth.
Dein Evaluator muss die folgenden Wörter unterstützen:
+, -, *, / (Ganzzahlarithmetik)DUP, DROP, SWAP, OVER (Stapelmanipulation)Dein Evaluator muss außerdem das Definieren neuer Wörter mit der üblichen Syntax unterstützen: : word-name definition ;.
Um es einfach zu halten, ist der einzige Datentyp, den du unterstützen musst, vorzeichenbehaftete Ganzzahlen mit einer Größe von mindestens 16 Bit.
Für die Syntax solltest du die folgenden Regeln verwenden: Eine Zahl ist eine Folge von einer oder mehreren (ASCII-)Ziffern, ein Wort ist eine Folge von einem oder mehreren Buchstaben, Ziffern, Symbolen oder Satzzeichen, die keine Zahl ist. (Forth verwendet wahrscheinlich leicht abweichende Regeln, aber das kommt dem schon sehr nahe.)
Bei Wörtern wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Um diese Übung zu lösen, musst du den Datentyp ForthState erstellen und die folgenden Funktionen implementieren:
emptyState gibt einen leeren ForthState zurück.evalText wertet einen eingegebenen Text aus und gibt den neuen Zustand zurück.toList gibt den aktuellen Stack als Liste zurück, wobei das Element oben auf dem Stack das rechteste (letzte) Element ist.Eine Dummy-Datendeklaration und die Typsignaturen findest du bereits im Code, aber es liegt an dir, die Funktionen zu definieren und einen sinnvollen Datentyp, ein Newtype oder ein Typsynonym zu erstellen.
Melde dich bei Exercism an, um Haskell mit 107 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.