Интерпретатор стекового языка программирования с пошаговым отладчиком и сменой тем оформления
Для запуска нажмите здесь.
Язык является видоизмененным ограниченным подмножеством языка Forth. В языке операции осуществляются с рациональными числами. Используется постфиксная запись операторов. Все вычисления осуществляются на стеке данных. При запуске интерпретатора стек может быть инициализирован некоторыми исходными данными или быть пустым.
Далее стек будет изображен следующим образом:
(n1 n2 n3)
Вершина стека находится слева.
Булевы значения представлены с помощью целых чисел:
-1 соответствует значению "истина", 0 - значению "ложь".
Слово define word начинает определение слова word. В теле определения (словарной статьи) следуют слова, которые надо вычислить, чтобы вычислить слово word. Статья заканчивается словом end. Определенное таким образом слово может быть использовано в программе так же, как и встроенное. В статьях допускаются рекурсивные определения. Вложенные словарные статьи не допускаются. Конструкции if...endif могут быть вложенными.
В программе предусмотрены константы, с помощью var их изменить невозможно (ошибки выдано не будет, но и перезаписана константа не будет). Константы также можно использовать при вводе начального стека.
В тексте программы можно оставлять комментарии. Комментарием является текст, заключенный между /*
и */
или находящийся в строке после //
. Пример:
define abs/*этот текст
не будет учтен*/dup 0 <
if neg endif
end //и этот также
abs
На странице расположены 10 кнопок управления и 4 текстовых поля.
Текстовые поля, расположенные слева, предназначены для ввода кода программы, начального стека и вывода результата. Справа расположено текстовое поле, в которое выводится словарь переменных/список функций.
Кнопки слева направо:
1) Смена темы оформления - на выбор представлено 5 тем: Ubuntu Classic, The Matrix, Literature, Nature, White Vintage.
2) Сохраненить в файл - код будет сохранен в текстовый файл на на компьютере пользователя.
3) Открыть файл - текст из файла будет помещен в поле ввода кода (№1).
4) Сохранить версию - текст программы (только из поля ввода кода) будет сохранен в буфер для возможности дальнейшей загрузки из него. Максимальное число сохранений - 20 (после этого они будут перезаписаны).
5) Предыдущая версия - загружает в поле ввода кода предыдущую сохраненную версию кода.
6) Следующая версия - загружает в поле ввода кода следующую сохраненную версию кода.
7) Запуск - начинает выполнение программы.
8) Отладка - включает окно отладчика кода.
9) Словарь переменных - выводит в правое текстовое поле список констант и пользовательских переменных с соответствующими им значениями.
10) Словарь функций - выводит список стандартных и используемых пользователем функций.
* Пользовательские переменные и функции обновляются после запуска программы.
Поля ввода представляют из себя измененную и несколько дополненную версию редактора Ace. Оба поля ввода (кода и стека) поддерживают подсветку синтаксиса (различную для функций, логических и арифметических операторов, констант, чисел, комментариев). Поле ввода кода поддерживает установку breakpoint'а, использующегося после для отладки.
В окне расположены два текстовых поля. В левом отображается код (редактировать его запрещено), в котором выделяется текущая строка для выполнения (результат ее выполнения будет выведен при следующем шаге отладки). В правом отображается стек на текущий момент времени.
Между текстовых полей расположены две кнопки:
1) Выполнить шаг - проходит один отладочный шаг по программе и выводит текущий стек в текстовое поле.
2) Вернуться к редактированию - выключает окно отладчика и возвращает к главной странице.