Совместное использование теории компиляторов и Switch-технологии (на примере разработки интерпретатора сконструированного авторами языка программирования)



© Е.А. Цымбалюк, Р.Г. Зубаиров, А.А. Шалыто

Санкт-Петербургский государственный университет информационных технологий, механики и оптики

Проектная документация
Исполняемая программа

Аннотация

В компьютерных технологиях все чаще используются различные интерпретируемые языки программирования (например, скриптовые). Их цель, как правило, решение вспомогательных задач.

Основное отличие скриптовых языков программирования от языков общего назначения, как C++ и Java, состоит в том, что программа на скриптовом языке не компилируется в исполняемый код (exe-файл для Windows или class-файл для JVM (Java Virtual Machine), а выполняется сразу после компиляции без создания промежуточного файла.

Практика показывает, что использование скриптовых языков ускоряет решение прикладных задач (например, написание сценариев в Web-дизайне, искусственного интеллект в играх). Скриптовые языки удобны для интеграции в приложение и запуска в виде внешних скриптов. Помимо скорости разработки скриптовые языки хороши еще и своей простотой. Человеку не требуется быть профессиональным программистом, чтобы использовать эти языки.

В данной работе описывается процесс создания интерпретатора простого языка.

Исходный текст программы транслируется в байт-код – набор микрокоманд интерпретатора с последующим их выполнением. Для построения байт-кода используется лексический и синтаксический анализаторы. С помощью лексического анализатора исходный текст преобразуется в конечное множество символов, из которых состоит грамматическое описание языка [1]. Далее полученный набор символов обрабатывается синтаксическим анализатором. При этом происходит проверка на соответствие грамматике и генерация инструкций интерпретатора.

Идеи и методы, использованные для создания интерпретатора [1, 2], реализованы с помощью SWITCH-технологии [3].

Литература

  1. Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений. СПб.: Вильямс, 2002;
  2. Ахо А., Сети Р., Ульман Д. Компиляторы. Принцип, технологии, инструменты. М.: Вильямс, 2001;
  3. Шалыто А. А., SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998.