Проект ЯРИЛ 2.0 представляет собой систему, предназначенную для проектирования, создания и проигрывания средств описания интерактивной литературы (Interactive Fiction, IF) на специальном языке ЯРИЛ.
Язык представляет собой набор алфавитных, синтаксических и семантических правил для корректного описания среды своего функционирования. Основными особенностями языка являются его модульность, предметность, объектно-ориентированность и событийность.
Далее представлены наработки по структуре языка. (Материалы взяты непосредственно из моего блокнота.)
Всё - объекты.
Объекты можно создавать, удалять, помещать в другие объекты, убирать из них, перемещать.
Прав нет. Есть Среда, которая управляет объектами. Есть Игрок, который указывает Среде, что делать. Среда умеет читать, что заложено в объектах, и выполняет это.
Т.о. существует 3 глобальных объекта: Среда, Игрок и Проигрыватель. Проигрыватель - объект-посредник между Игроком и Средой, но он же и часть Среды. Все остальные объекты - объекты Мира.
Связь между объектами осуществляется при помощи Потоков. Схема потоков приведена ниже:
Команда (как наиболее важный из потоков) пораждает Событие. Событие - это попытка что-либо сделать с помощью Среды с объектами Мира.
Команда: Действие, Шаблоны: Макрос
В Шаблон входит:
константые
имена объектов в любом падеже
Макрос - процедура, обрабатывающая шаблон.
Т.о. существует набор действий - оснований для команд. Действие в команде всегда идёт первым. За ним следую параметры - их вид и порядок описывается в шаблоне специальными символами и словами. Каждый шаблон указывает на макрос - скрипт обработки команды.
Парсер
Парсер работает следующим образом:
В ведённой строке-команде он выделяет 1ое слово и записывает его в переменную Действие (вернее, указатель на него в словаре действий).
Он находит в описании действия набор шаблонов и проверяет каждый из них на сходимость с командой-строкой. При этом параметры команды, которые соответствуют типовым (или видовым) определениям, записываются в соответствующие массивы типовых переменных (вернее, указатели на них в типовых словарях).
Далее запускается макрос, соответствующий подошедшему шаблону, и ему передаются все переменные, заполненные во время парсинга.
Программирование
Непосредственное программирование состоит из 2х частей:
Описательное.
Скриптовое.
Описательное программирование подразумевает статическое описание объектов, команд и событий языка.
Сюда входит:
Описание типов объектов (классов)
Описание экземпляров объектов (они создаются перед запуском истории)
Описание команд:
Описание действий
Описание шаблонов
Описание макросов
Скриптовым программированием называется непосредственное описание действий среды в ответ на команды Игрока. Оно (программирование) позволяет совершать манипуляции с объектами (создание, удаление, перемещение, изменение свойств) и вызывать макросы.
Эти 2 части в любой последовательности составляют историю на языке ЯРИЛ 2.0.
Кроме всего прочего язык ЯРИЛ 2.0 поддерживает модульную структуру программирования: весь исходный код может быть поделён на модули - отдельные части кода, код которых просто вставляется (во время компиляции) вместо описания включения этого модуля.
События
Событие представляет собой момент изменения свойства каког-либо объекта или запуск макроса. Событие (в понятии языка) - это описание реакции Среды (на скриптовом языке) в ответ на изменение свойства (вернее, попытку изменения) или запуск макроса.
Событие: Тип (изменение_свойства/запуск_макроса), Субъект события (объект.свойство/имя_макроса)