ТОМ 0.9 бета: различия между версиями
ASBer (обсуждение | вклад) |
ASBer (обсуждение | вклад) |
||
| Строка 46: | Строка 46: | ||
Интерфейс между ядром и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. |
Интерфейс между ядром и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. |
||
Для этого необходимо подключить tom.dll и его функции: RunFile(); RunText(); Command(); |
|||
===экспортные функции=== |
|||
Код ядра в настоящий момент закрыт. |
|||
Назначение функций: |
|||
*char* RunFile(char*FileName) |
|||
Исходник консольного интерфейса [[Медиа:ConTOM_s.rar|constom.exe]] на языке C доступен для [[Медиа:ConTOM_s.rar|скачивания]]. |
|||
**Выполняет скрипт из указанного файла. |
|||
**Возвращает текст, сгенерированный при выполненнии скрипта. |
|||
*char* RunText(char*Statement) |
|||
**Вычисляет выражение или выполняет скрипт переданный в строке. |
|||
**Возвращает результат вычисления. Текст сгенерированный при выполненнии скрипта пишется в лог. |
|||
*char* Command(char*Input) |
|||
**Выполняет команды на русском языке. |
|||
**Возвращает текст, сгенерированный при выполненнии команды. |
|||
===Милена=== |
===Милена=== |
||
Версия от 13:43, 2 июля 2009
Общая информация
Парсерная русскоязычная ИЛ-платформа
Расшифровка названия: ТОМ - Текстовая Основа Миростроения.
Язык программирования
Платформа имеет язык программирования, напоминающий С++. Объектная модель поддерживает линейное наследование. Есть возможность обработки событий и фоновых действий.
Парсер команд на русском языке
Парсер изначально ориентирован на русский язык, не имеет ограничений на количество слов в команде, команды описываются с помощью шаблонов. Парсинг управляется функциями-проверками к шаблонам.
Консольный интерфейс constom.exe
Консольный интерфейс поддерживает тег смены цвета шрифта и несколько служебных тегов.
Constom является простым примером для разработки интерфейсов к ТОМу.
Модуль консольного интерфейса constom.cpp на языке C доступен для свободного скачивания.
Поддержка HTML и прочих тегов
Ядро ТОМа позволяет использовать как HTML разметку, так и любые другие теги. Текст, заключенный в < > прозрачен для ядра ТОМа и может быть обработан программой-интерфейсом при разборе текста перед его выводом.
Вся тяжесть обработки HTML тегов и прочей разметки ложится на front-end. Полнота поддержки HTML зависит от конкретного front-end-а.
Текущее состояние разработки
Доступна версия 0.9.2.0 бета. К платформе прилагается короткая демо-игра, адаптированная для проигрывания в Милене.
Также имеется окончательно устаревший набор файлов-примеров по программированию. (примеры приведу в соответствие с новым синтаксисом как только появится время)
Идет бета-тестирование и разработка документации.
Интеграция с другими программами
Платформа состоит из 2х частей:
1. Ядро - реализовано в виде динамической библиотеки .dll
2. Интерфейсная оболочка (Front-end)
Интерфейс между ядром и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. Для этого необходимо подключить tom.dll и его функции: RunFile(); RunText(); Command();
экспортные функции
Назначение функций:
- char* RunFile(char*FileName)
- Выполняет скрипт из указанного файла.
- Возвращает текст, сгенерированный при выполненнии скрипта.
- char* RunText(char*Statement)
- Вычисляет выражение или выполняет скрипт переданный в строке.
- Возвращает результат вычисления. Текст сгенерированный при выполненнии скрипта пишется в лог.
- char* Command(char*Input)
- Выполняет команды на русском языке.
- Возвращает текст, сгенерированный при выполненнии команды.
Милена
Первым удачным примером интеграции движка ТОМ является платформа Милена.
Милена может выступать как полноценный оконный интерфейс ТОМа с поддержкой 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: оконный интерфейс пока крайне сырой...