Инструменты для создания DSL в .NET - PullRequest
2 голосов
/ 10 мая 2009

Меня все больше и больше дразнят в разработке DSL. Я разработал крошечный с F # с использованием fslex и fsyacc, но сообщения об ошибках неточны (я также не могу найти способ генерировать более качественные, кажется, мало документации о том, как обрабатывать ошибки) и тот факт, что они не будут анализировать строки UNICODE адекватно, не приемлемо для меня. Короче говоря, я ищу инструменты, упрощающие разработку DSL (инструменты Visual Studio для этого на самом деле не похожи на те, что мне нужны), и меня больше всего интересует часть парсинга / генерации AST. Я посмотрел на ANTLR, и смешивание мета-языка определения кода и грамматики выглядит мне плохо, поэтому, пожалуйста, не упоминайте об этом или решениях, страдающих от аналогичной проблемы в ответах. Кроме того, я видел кое-что для языка с именем Boo, но я действительно не заинтересован в том, чтобы связываться с еще одним языком (особенно если у него мало поддержки) прямо сейчас, так что это тоже не подходит. Любые другие предложения приветствуются, если они хорошо документированы, отлично работают с .NET и, что не менее важно, не включают использование динамически типизированного языка или использование DLR.

Ответы [ 5 ]

2 голосов
/ 10 мая 2009

Возможно, вы все равно захотите взглянуть на исходный код Boo, чтобы увидеть, как они работают. Они также используют ANTLR для генерации парсера. Вам не нужно смешивать какой-либо код с грамматиками ANTLR - это может быть полезно как полностью описательный, если это LL (*) langauge.

2 голосов
/ 11 мая 2009

Вы хотите начать работать с Осло. Он включает в себя инструменты для определения DSL и инструменты для определения грамматики по DSL. Грамматики могут испускать AST или что-либо еще.

Одним из видов вывода, который он может генерировать из DSL, является соответствующая схема SQL Server. Таким образом, экземпляры DSL могут храниться в SQL Server Express (или выше).

Осло является частью более широкого видения, которое есть у Microsoft, но вы можете проигнорировать это и просто начать работу с частью "DSL".

Я рекомендую вам начать работу и дать Microsoft знать, что вам нравится и не нравится в ней. Вы привлекли их внимание прямо сейчас, знаете ли вы это или нет.

2 голосов
/ 10 мая 2009

Может быть, вы могли бы попробовать Осло . Лично я еще не использовал его, но примеры выглядят довольно интересно.

«Осло» состоит из: Инструмент, который помогает людям определять и взаимодействовать с моделями богатым и наглядным способом Язык, который помогает людям создавать и использовать текстовые доменные языки и модели данных Реляционный репозиторий, который делает модели доступными как для инструментов, так и для компонентов платформы

Здесь представляет собой общий обзор!

1 голос
/ 26 октября 2009

Ирония - расположена по адресу Ирония @ CodePlex может быть хорошим решением для вас - вы можете создать свою грамматику, используя встроенную функциональность языков .NET, вместо того, чтобы пытаться построить BNF файлы грамматики отдельно.

0 голосов
/ 11 октября 2009

Самый простой способ создать DSL на почти простом английском: Создайте свой собственный DSL для Java или C # (часть 4): добавьте семантический слой

...