bmstu-iu9 / utp2017-3-forth

Интерпретатор стекового языка программирования с пошаговым отладчиком и сменой тем оформления
MIT License
8 stars 0 forks source link

IU9ForthDebugger

Интерпретатор стекового языка программирования с пошаговым отладчиком и сменой тем оформления

Запуск интерпретатора

Для запуска нажмите здесь.

Описание языка

Язык является видоизмененным ограниченным подмножеством языка 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) Вернуться к редактированию - выключает окно отладчика и возвращает к главной странице.

Участники: