mps что это такое

JetBrains MPS для интересующихся #1

Введение

Спасибо всем за критику в комменте под первым постом, где я хотел попробовать написать про MPS, не затрагивая важные темы, чтобы можно было потом более качественно начать писать по порядку.

Зачем нам нужен язык Weather?

С этой точки зрения, DSL — это как фреймворк, только с более удобным интерфейсом. Ясное дело, под один проект фреймворк делать никто не будет, за исключением совсем уж монструозных случаев. А сделать его под конкретную предметную область — почему бы и нет.

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

Синтаксис

Язык Weather, который мы хотим реализовать, должен выполнять следующую задачу: мы должны уметь лаконично выражать условия (погода сегодня, например) и следствия (погода завтра, послезавтра. ).
В языке Weather мы будем делать наши прогнозы отталкиваясь от 1 фактора: от температуры на сегодняшний день(массив объектов время + погодные условия).

У нас очень простые данные — время + температура в единицах измерения. Создадим абстрактный концепт WeatherTimedData — он нам нужен для хранения времени измерения и самой температуры.

Теперь нужно определить, что такое Temperature и Time.

Вот как я реализовал отображение в редакторе для Temperature:

Здесь у нас первая ячейка — double значение, величина температуры, а вторая — Read-Only model access. Здесь мы немного отдаляемся от практики и переходим к теории.

Теория

В MPS все строится на концептах, если проводить прямую параллель с ООП, то концепты — это классы. Они могут расширять другие концепты, реализовывать интерфейсы, но еще они могут иметь какую-то логику. Например, если мы описываем абстрактный класс температуры, то нужно предусмотреть возможность задания собственных единиц измерения.

Можно было бы задать unit как переменную, а не писать абстрактный метод, но…
Есть аспект, называется Behavior. Все, что он может делать — добавлять новые методы к концепту. То есть добавить переменную мы не можем, поэтому будем использовать абстрактный метод.

И вот после этого мы можем у каждой реализации концепта Temperature вызывать этот метод. Но где же его вызывать? Как вообще кодить в этом MPS.

Снова практика

Мы остановились на том, что у нас есть непонятная ячейка в Editor аспекте — ReadOnly model access. Все очень просто — если нужно как-то логически обработать proeprty/children/reference перед тем, как его показывать, и на это не хватает встроенных приколов, то мы можем сами получить нужную строку из контекста редактора и реализации концепта. Если просто — нам дают текущий объект концепта, то есть реализованный, и мы можем из него получить все, что мы там понапихали. В данном случае мы хотим получить единицу измерения, поэтому мы нажимаем на ячейку R/O model access и пишем

Кстати, в любом месте кода вы можете тыкнуть на штучку, что Вас интересует и нажать Ctrl + Shift + T и получить информацию о типе этой штучки. Например, если мы нажмем на node в скрине выше и узнаем его тип, то мы получим

node = какая-то реализация концепта
concept = класс концепта
Так! Мы уже умеем составлять температуру по значению и единице измерения, но откуда мы возьмем, какая единица измерения нам нужна? Из дочерних реализаций, естественно.
Создаем пустой CelsiusTemperature концепт, расширяем Temperature и создаем для него behavior.

Остается только собрать все вместе в WeatherTimedData:

Собираем язык и смотрим на результат:

Вроде похоже на правду. Еще, конечно, нет самих предсказаний погоды, нет подсветки, к тому же часы у нас могут быть больше 24 и меньше нуля, минуты тоже не ограничены ничем, кроме размерности integer… В следующем посте ждите разъяснений по новому аспекту — constraints и еще чего-нибудь. А пока — пишите фидбек в комментариях, все как всегда, если вопрос простой — отвечаю там же, если он обширен и скорее как пожелание — то я постараюсь с каждым постом писать все качественнее. Спасибо за внимание!

//UPDATE\
Завел кривой репозиторий с проектом, где каждая ветка — новый туториал на Хабре. Это он.

Источник

Управляемые сервисы печати MPS

Печать – технический процесс, непосредственно связанный с бизнесом и влияющий на него. Казалось бы, что здесь такого? Просто рутина – отправил документ на принтер и получил распечатку. На деле все выглядит несколько иначе: закончившийся тонер или чернила, неисправная техника или большие очереди на печать могут вылиться бизнесу в большие издержки.

Что такое Managed Print Services (MPS)?

MPS – это аутсорсинговая услуга, благодаря которой заказчик получает оптимизированную печатную инфраструктуру, работающую без простоев и перебоев.

Рассмотрим реальный случай.

Клиент: логистическая компания.

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

Решение: передача печати на аутсорсинг, оптимизация печатной инфраструктуры.

Какие проблемы решает MPS?

Как упорядочить процесс печати?

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

Обеспечение бесперебойной работы существующей инфраструктуры печати. На этом уровне мы помогаем с расходниками, ресурсными компонентами и инженерами, обслуживающими технику.

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

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

Читайте также:  failed to start the game assassins creed 2 что делать

При всех трех вариантах сервиса вы получаете единую точку входа в виде одного поставщика услуги, единую точку ответственности, консолидированную отчетность и мониторинг инфраструктуры печати.

Не только печать, но еще и сканирование!

Компания Softline предлагает услуги автоматизации сканирования, распознавания и сортировки документов на портале, в хранилище, СЭД. В проект внедрения может быть включена работа оператора, который занимается оцифровкой и складированием отсканированных документов.

Помним про безопасность печати!

DLP-системы позволяют отслеживать действия пользователей, но они не способны обеспечить безопасность вывода на твердом носителе (бумага). Между тем, любой из сотрудников может вывести конфиденциальную информацию на бумагу и унести распечатку с собой. В зоне риска и сведения, которые выводились на печать для служебного пользования, но долго лежали невостребованными и могли быть скопированы посторонними лицами, не имеющими прав на доступ к этой информации.

Системы управления печатью, такие как MyQ, SafeQ, PaperCut, Ringdale FollowMe и др. позволяют контролировать этот источник потенциальной утечки информации, анализируя права пользователей на печать тех или иных данных.

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

И, конечно, следует помнить, что до 30% документов, отправленных на печать, остаются невостребованными.

Использование систем управления печатью имеет значительный экономический эффект:

Все вышеприведенные цифры подтверждены практикой. Средняя экономия по нашим клиентам после внедрения систем управления печатью составляет 15-20%.

Это интересно!

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

Коробочная услуга управляемой печати

Для небольших организаций и компаний, где объем печати не больше 100 тыс. отпечатков в месяц, мы запустили услугу «коробочного» аутсорсинга на новом оборудовании XEROX или HP Inc., позволяющую на длительный срок обеспечить бесперебойность печати заказчика.

Коробочная услуга включает определенный набор сервисов, в который включена аренда устройства, расходники, ресурсные детали, стоимость заданного объема печати и SLA. Страницы, распечатанные за рамками базового платежа, тарифицируются отдельно. Все инциденты устраняются на следующий рабочий день.

Преимущества коробочной услуги управляемой печати:

Сервисы MPS компании Softline гарантируют высокий уровень надежности систем. Мы обеспечиваем безопасность и функционирование системы, если необходимо, то и в режиме 24/7.

Источник

Что такое MPS

1. Краткое описание

Самый мощный когда-либо созданный седан Mazda
Бензиновый 260-сильный двигатель с прямым впрыском и турбонаддувом с системой активного крутящего момента с распределением на все колеса
Экспрессивный внешний дизайн

Mazda6 MPS, флагман линейки Mazda6, и наиболее мощный седан Mazda, начнет производиться в Европе в начале этого года. Это выход на растущий рынок высокомощных седанов. Во время производства Mazda6 MPS, основной целью было создание автомобиля, который выведет концепцию Zoom-Zoom на новый уровень воодушевленного динамизма. И у Mazda это получилось. Наибольшее удовольствие от вождения авто обеспечивается MZR 2.3 DISI* бензиновым двигателем с турбонаддувом, активным крутящим моментом с распределением на все колеса и модернизированным шасси в соответствии с повышением мощности и крутящего момента.

Прямой впрыск и турбонаддув являются основными источниками мощности нового 4-цилиндрового двигателя семейства Mazda MZR. Максимальная мощность автомобиля 191 кВ/260 л.с. при 5,500 тысячах оборотов и максимальный крутящий момент 380 Нм при 3,000 тысячах оборотов. В результате этого Mazda6 MPS разгоняется до 100 км/ч всего за 6,6 секунд и развивает максимальную скорость 240 км/ч, что делает ее одним из самых быстрых седанов на дорогах Европы, с потреблением бензина всего 10.2 л на 100 км. Новая разработка — 6-ступенчатая механическая коробка передач приносит еще больше удовольствия от вождения. Использовать полную мощность двигателя позволяет 3-вальная конструкция с более высоким передаточным числом.

В зависимости от дорожных условий и стиля вождения Mazda6 MPS, используя систему активного крутящего момента с распределением на все колеса, может перераспределить до 50% мощности двигателя на задние колеса. Используя информацию о угле поворота, коэффициенте отклонения от курса, боковой перегрузке и состоянии двигателя, электронная система распределяет мощность двигателя на передние и задние колеса, соответственно каждой конкретной дорожной ситуации. Система использует три различных режима («Нормальный», «Спортивный», «Стабильный», для скользкой дороги), которые выбираются автоматически контролирующим модулем двигателя, таким образом водитель может сконцентрироваться на дороге.

Также было проведено усиление жесткости кузова и шасси в соответствии с возросшей мощностью Mazda6 MPS. Эти нововведения позволили повысить жесткость при кручении на 50% по сравнению со стандартным 4-дверным седаном Mazda6. Создав более жесткий кузов, инженеры «мотор-спорт» подразделения Mazdaspeed сделали шаси более спортивными, не принося в жертву присущий Mazda6 высокий уровень комфортности. В автомобиле использованы двойная передняя подвеска рычажного типа и задняя подвеска типа multi-link. Обе оборудованы более жесткими амортизаторами, цилиндрическими пружинами, с более высоким коэффициентом жесткости и усовершенствованными стабилизаторами поперечной устойчивости. В добавок ко всему тормозная система была улучшена, установлены дисковые тормоза большего диаметра как на передние так и на задние 18-дюймовые диски уникального дизайна.

Продуманное улучшение дизайна откровенно намекает на спортивный характер новой Mazda6 MPS. Mazda аккуратнейшим образом вносила усовершенствования во внешний вид автомобиля, с целью подчеркнуть его сущность. Большой воздухозаборник на капоте, задний бампер с диффузором, спойлер на крышке багажника и интегрированные выхлопные трубы, все это подчеркивает спортивный стиль автомобиля.

Во внутренней отделке автомобиля использованы высококачественные ткани и материалы для усовершенствования атмосферы в салоне. В салоне автомобиля успешно сочетаются спортивная функциональность и изысканный комфорт. Специальные детали интерьера включают спидометр со шкалой до 280 км/ч, кожаный руль с тремя спицами, половинчатые ковшеобразные передние сиденья, кожаную рукоятку коробки переключения передач и алюминиевые педали с резиновым покрытием. Также флагману линейки Mazda6 присущи все изменения привнесенные в Mazda6 фейс-лифт летом 2005 года. Среди них более широкий подлокотники, вертикальные внутренние дверные ручки, титановая выхлопная труба и черная панель аудио системы («пиано»).

Читайте также:  Леопардовая юбка с чем носить осенью

Быстрый взгляд на Mazda6 MPS

Выход Mazda на растущий рынок высокомощных седанов
MPS концепт — наиболее радикальное воплощение концепции дизайна Zoom-Zoom на сегодняшний день

Дизайн
Капот поднят на 40 мм, более агрессивный дизайн
18-дюймовые литые диски с шинами 215/45
Задний спойлер, диффузор и интегрированные выхлопные трубы
Комингсы дверей из нержавеющей стали
Алюминиевые педали с резиновыми накладками
Спидометр со шкалой до 280 км/ч
Центральная панель выполнена в цвете темного титана, аудио система черного цвета

Оборудование и функциональность
Кожаная отделка руля и ручки КПП
Кожаные половинчатые ковшеобразные передние сидения
Электропривод регулирования водительского сидения с функцией памяти
Электропривод задних и передних стеклоподъемников
Система DVD навигации включающая систему ТМС (Traffic Message Channel) с цветным дисплеем
Аудиосистема BOSE с CD чейнджером на 6 дисков и 7 аудио колонок

Трансмиссия и двигатель

2,3 — литровый бензиновый двигатель с прямым впрыском и турбонаддувом
Блок цилиндров и головки цилиндров изготовлены с использованием усовершенствованных технологий производства корпорации Mazda (Advanced Precision Mazda Casting process)
260 л.с. что почти на 100 л.с. больше чем в Mazda6 в стандартной комплектации
Максимальная скорость 240 км/ч, разгон с 0 — 100 км/ч за 6,6 секунды
Система распределения активного крутящего момента на все колеса с автоматическим использованием трех режимов (Active Torque Split All-Wheel Drive system)
Антипробуксовочная система задних колес
Спецтюнинг выхлопной системы

Шасси и безопасность

Жесткость кузова усилена на 50% по сравнению с предыдущими моделями
Шасси адаптировано для более спортивного вождения
Усовершенствованная и усиленная подвеска
Установлены дисковые тормоза на все колеса большего диаметра
Система АВS + EBD + Вrake Аssist + TRC (Антипробуксовочная система)
6 подушек безопасности, автоматически складываемая педаль тормоза в случае лобового удара
Ксеноновые фары и противотуманки

2. Мнение автомобильных экспертов

Пика в производстве спортивных автомобилей корпорация Mazda достигла выпустив модели RX-7, RX-8 и выиграв автогонки Le Mans в 1991 году
Mazda 6 MPS-спортивный флагман среди автомобилей среднего размера
Европейское дизайнерское бюро Mazda создало концепткар Mazda 6 MPS для Парижского Моторшоу 2002

Mazda 6 MPS самый мощный седан когда-либо созданный корпорацией Mazda. В создании автомобиля, в июле 2002, активное участие принимали специалисты спортивного тюнингового подразделения Mazdaspeed, используя свой многолетний опыт в создании спортивных автомобилей, уделив особое внимание усовершенствованию шасси.

Корпорация Mazda поддерживает многолетнюю традицию производства спортивных автомобилей, кульминацией этого стало создание 3 поколения заднеприводного автомобиля с роторным двигателем RX-7 и существующей 4-х дверной Mazda RX-8 с роторным двигателем. В 1991 году подразделение Mazdaspeed достигло наибольшего успеха став первым создателем автомобиля с роторным двигателем который выиграл 24-х часовую гонку Le Mans. Mazda стала первым японским автопроизводителем победив на гонке Le Mans, с момента ее основания в 1923. И не забывайте, что Mazda принимала участие в ралли в 80-х и 90-х годах на полноприводных автомобилях с двигателями с турбонаддувом.

Дизайнеры новой Mazda6 MPS, флагмана линейки Mazda6, сознательно избежали соблазн придать седану агрессивный раллийный внешний вид. Они выступили против использования таких деталей кузова как: огромный броский спойлер и воздухозаборник для охлаждения двигателя. Вместо этого был создан внешний дизайн указывающий на наличие мощного двигателя и спортивного шасси обеспечивая уверенность, что Mazda6 MPS в любой ситуации покажет хороший результат.

На Парижском Мотор-Шоу 2002 Mazda представила концепткар Mazda6 MPS обозначив свои намерения войти на рынок престижных спортивных седанов. Автомобиль был создан в европейском исследовательском центре Mazda в Оберурселе (Oberursel), Германия в 2002 и многие характеристики присущие концепткару используются при серийном производстве.

Mazda6 MPS — новый флагман чрезвычайно успешной линейки Mazda6. В Европе уровень продаж Mazda6 превзошел все ожидания. В то время как уровень продаж автомобилей Mazda в Европе в 2001 составлял 165 000 единиц, к 2004 году это количество увеличилось до 265 000 единиц. Львиная доля данного роста принадлежит Mazda6, 100 000 автомобилей этой марки было продано в течении 2003 года — 43% от общего уровня продаж. Mazda6 не теряет своей популярности и остается наиболее продаваемым автомобилем в Европе. В 2005 году остался тем же и составил 5% от общего объема продаж в Европе. На сегодняшний момент более 900 000 автомобилей были произведены на заводах корпорации Mazda Hofu II (Hiroshima) и AAI (Michigan, USA).

Наиболее полное воплощение концепции Zoom-Zoom на сегодняшний день
Уровень продаж седанов высокого класса в Европе увеличился втрое с 2000 года.
Высококлассные модели Audi, BMW, Alfa Romeo GTA являются прямыми конкурентами.
Целевая аудитория мужчины в их «лучшие годы», которые получают удовольствие от вождения динамичных автомобилей.

Mazda6 получила название «MPS» как аббревиатуру от «Mazda Performance Series». Mazda позиционируется на Европейском рынке седанов класса C и D. С 2000 года объем продаж этих автомобилей в Европе увеличился в три раза.

Для Mazda, MPS является наиболее полным воплощением концепции Zoom-Zoom. Динамичный дизайн кузова и экстремально спортивное шасси дает Mazda6 MPS преимущество перед такими конкурентами как Audi A4 V6 3.2 Quattro и BMW 320 iX. Среди 260-и сильных седанов у Mazda6 MPS есть конкуренты с более экстремальным внешним видом такие как: Alfa Romeo GTA и Opel Vectra OPC. Особенно конкурентоспособной Mazda6 MPS делают ее высокое качество, уникальный стиль и привлекательная цена.

Привлекательность автомобиля
Высокий класс автомобиля выражен в его внешнем дизайне
Более агрессивный вид автомобилю придает капот с «power dome»
Задний бампер с диффузором и интегрированными выхлопными трубами

Внешний вид Mazda6 в стандартной комплектации явно выражает принадлежность автомобиля к семейству Mazda. Спортивный дизайн автомобиля создает иллюзию того, что автомобиль едет даже когда он остается неподвижным. Для Mazda6 MPS корпорация тщательно модернизировала стандартный седан Mazda6 с целью гармонично выразить высокий класс автомобиля. Создавая дизайн Mazda6 MPS специалисты старались избежать излишеств.

Читайте также:  Мама говорит что я красивый

В результате Mazda6 MPS получила увеличенный воздухозаборник, более динамичный передний бампер с установленными по углам противотуманными фарами в темной оправе и традиционную для Mazda пятиугольную решетку радиатора, все это придает автомобилю более спортивный и уверенный вид. Выпуклые линии идущие от решетки радиатора до передних стоек визуально удлиняют капот. Капот приподнят на 40 мм, что ясно указывает на наличие двигателя с турбонаддувом и расположенного над ним интеркуллера. Форма капота указывает на значительную мощность двигателя под ним.

Боковой обвес предает автомобилю приземистый, агрессивный вид. В колесных арках расположены 15-ти спицевые 18 дюймовые легкосплавные диски (шины 215/45/R18).

Двойная интегрированная выхлопная труба также свидетельствует о мощности автомобиля.
Похожий по стилю на Mazda RX-8 задний обвес MPS и задний небольшой спойлер на багажнике обеспечивают дополнительную устойчивость. «Все эти усовершенствования привели к улучшению коэффициента лобового сопротивления и оптимизировали баланс между передним и задним валом Mazda6 MPS», сказал Цуоши Каджима (Tsuoshi Kojima), Заместитель Менеджера проекта.

Специально для Mazda6 MPS был создан цвет названный Мокрый Серебристый Металик (Moist Silver Metallic). Подобно тому как изменяется погода в течении года меняется цвет кузова автомобиля в зависимости от того под каким углом вы смотрите на него. Не смотря на это Mazda6 MPS представлена в трех различных цветах: красном, черном и титановом.

Источник

JetBrains MPS — IDE для разработки проблемно-ориентированных языков программирования

Введение

MPS — это среда разработки языков программирования на платформе Intellij Idea. Она предоставляет возможность моделировать языки программирования, описывать структуры, сосредотачиваясь конкретно на дизайне и бизнес-логике, не отвлекаясь на парсеры, лексеры и различные сторонние фичи языка. Что нужно сразу обозначить: язык, который разрабатывается с помощью MPS, не компилируется в рабочую программу. Чаще всего он генерируется в модели других языков либо в текстовую форму.

Почему я решил написать этот пост? Я считаю, что это очень недооцененная возможность, а недооценена она потому что порог вхождения очень высок, плюс это один из самых непопулярных продуктов JetBrains.

Документация очень подробная, описывает все возможности, но если нет осознания «что я делаю и зачем мне это делать», то она вряд ли будет полезна. Также есть серия уроков от JetBrains на YouTube, но опять же, я более-менее начал понимать, что происходит, только после двух просмотров всей серии и досканального изучения предлагаемых sample проектов.

Я планирую написать серию постов об этой замечательной среде, чтобы по окончанию прочтения у энтузиастов оставалось как можно меньше вопросов «как сделать эту штуку», и как можно больше понимания структуры, чтобы можно было эффективно пользоваться документацией. Познавать MPS мы будем во время создания языка для описания закономерностей погоды. Почему, собственно говоря, и нет?

Концепция

MPS (дальше — среда / MPS) предоставляет возможность создавать модули двух типов — Language и Solution. Первый является описанием языка и его аспектов, второй используется для разработки каких-либо проектов, тестирования языка / языков, расширений языков.

Я начну с Language.

Самое важное, что нужно понять с начала, — это процесс разработки языка и что с ним происходит потом.

Итак, 1 статья — 1 кусок конечного проекта.

Создаем проект в MPS

На данном этапе мы выбираем название проекта и название языка, также можно создать Sandbox solution — модуль, в котором мы будем смотреть, как работает наш язык.

У нас есть пустой проект. Совсем пустой. Но в языке WeatherPrediction есть вложенные директивы — structure, editor… Это аспекты языка — в них мы описываем поведение языка в разных ситуациях. Например, structure содержит основные концепты языка, а editor — то, как они будут отображаться в редакторе кода. Это должно звучать очень абстрактно, особенно если Вы еще не знакомы с MPS. Понимаю. Так что сразу в бой.

Сначала нам нужно объявить root концепт языка. В переводе на русский — мы создаем некую структуру, которая будет обобщать все другие структуры. В Java это был бы

У концепта есть 3 типа данных, которые он может содержать:

Что здесь происходит: Мы определяем концепт, называем его PredictionList, говорим, что его можно реализовать как root концепт и наследуемся от INamedConcept. Если посмотреть на его definition (Ctrl + B)

то мы увидим, что это interface concept, у которого есть property name: string, что, собственно говоря, логично из названия

Обратите внимание, что синтаксис похож на язык программирования. Это так: этот код написан на языке jetbrains.mps.lang.structure, который описывает концепты языка.

Если мы сейчас соберем проект и захотим посмотреть, что получилось, то нам нужно будет создать модель в модуле WeatherPrediction.sandbox.

Заменим no name на Saint Petersburg

Бум! У нас есть дефолтная визуализация концепта. Чтобы посмотреть AST, нажмите на любое место в редакторе и нажмите хоткей Alt + X

Здесь мы можем описать то, как будет отображаться наш PredictionList в редакторе кода.
Пока не будем вдаваться в подробности, как тут это все сделано, просто пишем [- и у нас создается массив ячеек. Все просто: в каждой ячейке — какой то константный текст / property / reference / children. И да, отображение описывается другим языком — jetbrains.mps.lang.editor.
Мы хотим, чтобы наш список предсказаний погоды выглядел следующим образом:
Weather prediction rules for %name%.

В первой ячейке — константный текст, во второй — , обращение к property по ключу name.

Пересобираем наш язык (Ctrl + F9) и смотрим в Sandbox solution, где мы до этого создали пустой PredicitonList по имени Saint Petersburg.

Все работает, AST то же самое, что и до наших модификаций.

На этом я, наверное, остановлюсь пока что, чтобы получить фидбек. В следующем посте я планирую добавить еще парочку концептов, а так же генерацию кода на Java.

Спасибо за внимание! Пожалуйста, все пожелания, непонятки и вопросы и пишите в комменты. Если вопросы конкретные и простые, отвечу в комментариях, иначе добавлю в следующий пост.

Источник

Обзорно-познавательный сайт