Upload
cs-center
View
158
Download
1
Embed Size (px)
Citation preview
Редактор для скриптинга сцен в CoSpaces
Илья Шкуратовруководители: Даниил Еловков, Илья Яцышин
2016 г
1/12
CoSpaces – онлайн платформа для создания 3D сцен
Для создания динамических сцен, хочется предоставить возможность писать скрипты, управляющие объектами.
Для комфортного и легкого создания скриптов нужен DSL и удобный редактор для него.
Контекст
2/12
Поставленные задачи
● Проектирование и реализация DSL с помощью MPS on the Web
● Реализация JavaScript генератора
● Интеграция редактора в СoSpaces
● Поддержка контекстно-зависимого дополнения
Работающий редактор, который будет поддерживать простую функциональность языка JavaScript ● переменные● функции● условный оператор● цикл ● и т.д.
Ожидаемый результат
3/12
Используемые технологии
4/12
Базовая часть языкаБазовые конструкции
● определение переменных
● определение функций
● арифметические выражения
● for
● if, else
Литералы
● Integer
● Float
● Boolean
● String
● Object
5
Дополнительные конструкции
Методы для сцены
● создание / удаление объекта
● получение объекта по идентификатору
● и т.д.
Сервисы (наборы методов, доступные объекту)
6/12
Интеграция с СoSpaces
● Вызов редактора со сцены по нажатию кнопки
● Сохранение написанного скрипта на сервере
● Генерация кода получения объекта по идентификатору
● Получение доступных для объекта сервисов
● Запуск сгенерированного скрипта
7/12
Интеграция с CoSpaces
8
Поддержка контекстно-зависимого дополнения
● Ссылки на переменные и функции предлагаются с учётом области видимости
● Ссылки на методы и поля выводятся все, затем происходит разрешение ссылки
9/12
Разрешение ссылокБлочная область видимости (как в С/С++, Java)
Цветовая индикация неразрешённой ссылки
Разрешение ссылки при добавлении объявления в область видимости переменной
10/12
ПланируетсяПроверка ограничений
● проверки, связанные с типами
● дублирование объявление переменной
● забытый return в функции
● и т.п.
Сигнализация об обнаруженных ошибок в редакторе
Поддержка классов и свойств11/12
Результаты
● Реализована базовая часть языка для скриптинга и Web-редактор для него
● Реализован транслятор в JavaScript
● Произведена интеграция редактора в CoSpaces
12/12