Skip to content

Latest commit

 

History

History
91 lines (46 loc) · 4.22 KB

arch_docs.md

File metadata and controls

91 lines (46 loc) · 4.22 KB

Блок-схема работы интерпретатора командной строки

Блок-схема, представленная на изображении, иллюстрирует работу интерпретатора командной строки.

Блок=схема

Блок "Запуск программы":

Загрузка интерпретатора командной строки.

Инициализация переменных и системных ресурсов.

Блок "Ввод пользователя":

Интерпретатор выводит приглашение (>).

Интерпретатор ожидает ввод команды пользователя.

Блок "Парсер":

Разбивает введенную строку на отдельные токены (команды, аргументы, опции).

Формирует список токенов для дальнейшего анализа.

Блок "Синтаксический анализатор":

Проверяет, является ли последовательность токенов корректной командой.

Проверяет правильность использования аргументов и опций.

Выводит сообщение об ошибке, если команда некорректна.

Блок "Семантический анализатор":

Проверяет, существуют ли команды, аргументы и опции, указанные в команде.

Проверяет права доступа к файлам и устройствам, указанным в команде.

Проверяет корректность программы с точки зрения типов.

Выводит сообщение об ошибке, если команда семантически некорректна.

Блок "AST дерево":

Из токенов строится AST дерево.

Блок "exit?":

Проверяет программа == or != exit.

Переходит в блок "Исполнение программы", если ==, иначе в "Завершение работы"

Блок "Исполнение программы":

В процессе исполнения программы происходит выполнение инструкций, представленных в AST.

Это включает в себя вычисление выражений, вызов функций, управление потоком выполнения и взаимодействие с памятью и внешними ресурсами.

Исполнение программы продолжается до тех пор, пока не будет достигнут конечный узел AST.

Блок "Завершение работы":

Интерпретатор освобождает ресурсы, использованные при выполнении команды и завершает работу.

Дополнительные элементы:

Блок "Базовый класс command":

Базовый класс для всех команд.

Блок "Наследники":

Классы, наследующие от базового класса command и реализующие конкретные команды.

Блок "Словарь с информацией об окружении":

Содержит информацию о текущем каталоге, переменных окружения и т.д.

Блок "Словарь с переменными":

Содержит значения переменных, заданных пользователем.

Блок "Штатная информация":

Содержит информацию о коде завершения программы.

Блок "exit?":

Используется для проверки, требуется ли завершение работы интерпретатора.

Интерпретатор завершает работу, если пользователь ввел команду exit, или она получена иными способами.