Реалізуйте обчислювач для дуже простої підмножини Forth.
Forth належить до стекових мов програмування. Реалізуйте дуже простий обчислювач для невеликої підмножини Forth.
Обчислювач має підтримувати такі слова:
+, -, *, / (арифметика з цілими числами)DUP, DROP, SWAP, OVER (операції зі стеком)Обчислювач також має підтримувати визначення нових слів за допомогою звичного синтаксису: : word-name definition ;.
Задля простоти потрібно підтримувати лише один тип даних: знакові цілі числа розміром щонайменше 16 біт.
Для синтаксису діють такі правила: число - послідовність з однієї або більше (ASCII) цифр, а слово - послідовність з однієї або більше літер, цифр, символів або розділових знаків, яка не є числом. (Forth, імовірно, використовує дещо інші правила, але це досить близько.)
Слова не чутливі до регістру.
Щоб виконати цю вправу, створіть тип даних ForthState і реалізуйте такі функції:
emptyState повертає порожній ForthState.evalText обчислює вхідний Text і повертає новий стан.toList повертає поточний стек як масив, де елемент на вершині стека є
найправішим (останнім) елементом.Заготовка оголошення типу даних і сигнатури функцій уже є, але функції потрібно визначити самостійно, як і створити змістовний тип даних, newtype або синонім типу.