ТОМ 0.9 бета

Материал из IFВики
Перейти к навигации Перейти к поиску

Общая информация

Парсерная русскоязычная ИЛ-платформа

Расшифровка названия

ТОМ - Текстовая Основа Миростроения.

Язык программирования

Платформа имеет язык программирования, напоминающий С++. Объектная модель поддерживает линейное наследование. Есть возможность обработки событий и фоновых действий.

Парсер команд на русском языке

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

Консольный интерфейс

Консольный интерфейс поддерживает тег смены цвета шрифта и несколько служебных тегов.

Поддержка HTML или других тегов

Ядро ТОМа позволяет использовать как HTML разметку, так и любые другие теги. Текст, заключенный в < > прозрачен для ядра ТОМа и может быть обработан программой-интерфейсом при разборе текста перед его выводом.

Текущее состояние разработки

Доступна версия 0.9.2.0 бета. К платформе прилагается короткая демо-игра, адаптированная для проигрывания в Милене.

Также имеется окончательно устаревший набор файлов-примеров по программированию. (примеры приведу в соответствие с новым синтаксисом как только появится время)


Идет бета-тестирование и разработка документации.

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

Платформа состоит из 2х частей:

1. Ядро - реализовано в виде динамической библиотеки .dll

2. Интерфейсная оболочка (Front-end)

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

Код ядра в настоящий момент закрыт.

Исходник консольного интерфейса constom.exe на языке C доступен для скачивания.

Милена

Первым удачным примером интеграции движка ТОМ является платформа Милена.


Милена может выступать как полноценный оконный интерфейс ТОМа с поддержкой HTML разметки. (поддерживаются теги <b></b>, <i></i>, <u></u>, <img></img>, <center></center>, <h1..9></h1..9>, <font></font>)

План развития платформы

бета-тестирование:

~ разработка документации;

~ разработка примеров по программированию;

~ портирование стандартной библиотеки RTADS

~ обкатка отладочного режима;

~ бета тестирование;


v.1.0 - релиз базовой версии.


v.1.x.x.x - развитие базовой версии.

+ новая категория объектов для лексем

+ транскрипция для записи лексем

+ типизация аргументов методов и перегрузка (overload) методов объектов


v.2.0 - вторая версия - парсер с динамическими шаблонами.

Changelog

Версия v.0.9.2.0 бета

  • Изменен синтаксис языка. Изменен формат описания объектов и доступ к свойствам объектов. В целом язык приблизился к C++ и стал выглядеть еще более привычно для программистов. Очень надеюсь что до выхода версии 1.0 синтаксис меняться более не будет.
  • Доведена до ума речевая модель. Определены речевые роли и их распределение в различных типах речевых актов. Реализация поддержки речевых ролей на уровне платформы позволяет автоматически определять лица и правильно подставлять/определять личные и возвратные местоимения при генерации/парсинге текста. Проверить это можно играя за различных персонажей - для мамы игра идет в 1 лице, для мышонка во 2м, и для крота в 3 лице. (О речевой модели в ТОМе обязательно напишу подробнее, т.к. тема интересна и требует дальнейшего развития)
  • Проект полность перебран заново. Исправлена архитектура движка. Это позволило избавиться от детских болезней роста и исправить множество ошибок. Теперь ТОМ мне представляется логически цельным и завершенным (в рамках разумных ограничений версии 1.0)

Версия v.0.9.1.4 бета (bugfix)

  • исправлены ошибки предыдущей версии

Версия v.0.9.1.3 бета

  • убраны синонимы для объектов (будут реализованы позже и на других принципах)
  • добавлен предопределенный метод CalcKey() для расчета переменной части морфологического ключа в зависимости от свойств объекта или других измечивых обстоятельств.
  • добавлен предопределенный метод Redirect() для перенаправления действия с одного объекта на другой.
  • исправлены найденные ошибки

Версия v.0.9.1.2 бета

  • произведен рефакторинг движка;
  • вызовы обработчиков событий и парсерных проверок приведены к стандарту Си;
  • изменена логика для значения null;
  • исправлены найденные ошибки.

Версия v.0.9.1.1 бета

  • существенно упрощена работа с числительными - для любого объекта в команде можно указать его число. Проверки на согласование с числительными теперь выполняются парсером.
  • для объектов, возвращаемых парсером, свойство .num теперь содержит число, указанное игроком;
  • числовые переменные в парсерных шаблонах убраны за ненадобностью;
  • для чисел стало возможным задавать строковые синонимы - "100"="сто";
  • добавлены специальные константы для указания количества - "все", "несколько", "половина", "треть", "четверть".

Версия v.0.9.1.0 бета

  • в дополнение к шаблонному парсеру добавлен подбор действий и фраз по ключевым словам и ключевым объектам с оценкой по весу (см. keyword);
  • конструкция задания лексем для парсера .lex = "строка" признана устаревшей и впоследствии будет удалена;
  • для объектов, возвращаемых парсером, свойство .lex теперь содержит лексему, названную игроком в команде;
  • любое свойство объекта, содержащее строку в формате лексемы и имеющее в основе одно слово, теперь может быть использовано как имя объекта в команде (альтернатива .lex=)
  • исправлены ошибки.

Версия v.0.9.0.2 бета

  • добавлены глобальные переменные token и secret;
  • добавлено сообщение парсера object_select;
  • для объектов добавлены предопределенные свойства in_dialog и as_variant
  • системные команды теперь могут использоваться в коде игры.

Например

global < "exit"

приводит к выходу из программы.

  • исправлены найденные ошибки.

Версия v.0.9.0.1 бета

  • для локаций добавлен обработчик события OnEnter()
  • убран обработчик события onChangePers() за ненадобностью
  • добавлен тег для очистки экрана <clear>
  • исправлены найденные ошибки в движке и игре.

Версия v.0.9.0.0 бета

  • дополнительная поддержка интерфейсов - добавлена константа frontend;
  • добавлена функция input();
  • демоигра адаптирована под Милену, добавлены картинки;
  • исправлены найденные баги.

Версия v.0.2.4.1 альфа

  • добавлены средства для организации диалогов и событий;
  • сообщений об ошибках в парсере вынесены в переменные и могут быть изменены;
  • оптимизирован парсер;
  • доработано сохранение игр;
  • исправлены найденные баги.

Версия v.0.2.4.0 альфа

  • добавлена возможность сохранения/восстановления игры;
  • исправлены найденные баги;

Версия v.0.2.3.3 альфа

Доработки платформы:

Доработки демоигры:

  • добавлены новые объекты (ягоды и грядки во дворе)
  • добавлены шаблоны для действий с объектами упомянутыми ранее;
  • добавлены действия с классовыми именами;
  • вероятно еще что-то… эээ не помню :)

Версия v.0.2.3.2 альфа

Добавлены относительные свойства объектов и ключевые слова actor и act.

Объектная модель платформы окончательно сформирована.

В демоигре восстановлена возможность игры любым персонажем.


Версия v.0.2.3.1 альфа

Исправлена работа конструкций языка if-else, for, while, switch-case. Фигурные скобки {} теперь необходимы только для объединения многострочных блоков. Все конструкции (за исключением switch-case) работают аналогично C. Принцип работы switch-case мною изменен, надеюсь, в лучшую сторону.

Также добавлены ключевые слова return, break, continue, работающие аналогично C.

Теперь язык платформы окончательно сформирован и позволяет разрабатывать алгоритмы любой сложности.


Документирование системы пока не начато, но начиная с этой версии в папке "Примеры" можно найти простые файлы с подробными комментариями, позволяющие освоить принципы работы платформы. Файлы, имеющие расширение .tom, открываются текстовым редактором.


Версия v.0.2.3.0 альфа

Изменения в интерпретаторе:

- добавлены конструкции циклов for и while;

- добавлена конструкция switch-case;

- изменена обработка событий, добавлены функции CheckMove, BefMove, AftMove;

- добавлена команда restart;

- формируется лог-файл, прошу присылать логи


Изменения в демоигре:

- добавлена система помощи, мышонок научился думать;

- добавлено ведение счета;

- возможность игры за разных персонажей временно убрана.


PS: оконный интерфейс пока крайне сырой...