Какой подход используют графические рабочие места DSL: парсеры или проекции? - PullRequest
0 голосов
/ 28 октября 2019

Насколько мне известно, есть два подхода, которые используют редакторы DSL:

1- Подход на основе парсера для разработки текстовых DSL: пользователь задает грамматику, а рабочая среда генерирует синтаксический анализатор, который распознаетэта грамматика. Парсер создает абстрактное синтаксическое дерево, которое используется генераторами кода и т. Д.

2- Проекционный подход : здесь нет парсера. Абстрактное синтаксическое дерево напрямую редактируется жестами пользователя, а правила проекции определяют способ визуализации абстрактного синтаксического дерева. Это позволяет одновременно использовать различных нотаций (текстовых, графических, табличных ...) .

Теперь, когда я смотрю только на графические инструментальные средства DSL (такие как DSL-инструменты изMicrosoft) Интересно, какой подход они используют и каковы этапы определения DSL. Если это проекционный подход, то почему он ограничен только графическими обозначениями?

Моя идея состоит в том, что он использует оба. Проекционный подход, чтобы сделать обозначение графическим, но модели сохраняются в определенном формате (XML для примера) и анализируются.

Спасибо.

1 Ответ

0 голосов
/ 29 октября 2019

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

Я бы сказал, что сохранение моделей на любом носителе в конечном итоге не может быть чем-то еще, крометекстовый или двоичный. Любой редактор, который хочет сохранить модели, будет сериализован в один из этих двух вариантов, даже MPS. Так как не имеет смысла говорить, что существует проекционный способ сохранения моделей, вы можете сказать, что и DSL-инструменты, и MPS имеют текстовый подход к сохранению и проекционный редактор, или (мой предпочтительный вариант) простои DSL-инструменты, и MPS могут создавать проекционные редакторы.

Кроме того, я бы не согласился называть DSL-tools языковым рабочим столом. Как вы можете прочитать в https://homepages.cwi.nl/~storm/publications/lwc13paper.pdf, программа должна соответствовать ряду критериев (на мой взгляд, больше, чем DSL-инструменты), чтобы быть языковым рабочим столом.

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

...