Каковы основные преимущества перехода на DLR для моего языка сценариев? - PullRequest
3 голосов
/ 24 июня 2009

Я написал DSL, используя Antlr для генерации лексера и парсера из моего файла грамматики. Парсер генерирует абстрактное синтаксическое дерево, которое содержит различные узлы (например, функциональный узел), которые я могу вычислить. В коде для узлов функций я забочусь о привязке - проверяю имена функций и типы параметров на совпадения из библиотеки функций. У меня есть простое кеширование, чтобы оптимизировать поиск функции (если я вызову A + B с двумя целыми числами, то при следующем использовании оператора плюс у меня будет большой шанс, что это будет с двумя целыми числами).

Недавно я читал о DLR, и, похоже, он предназначен для реализации такого типа реализации языка сценариев. На первый взгляд, мне не кажется, что он генерирует синтаксический анализатор или лексер, но кажется, что он помогает с другими частями реализации. Мне было интересно, что будет для меня главным преимуществом перехода на использование DLR.

Ответы [ 3 ]

4 голосов
/ 24 июня 2009

Если вы реализуете привязку тщательно, DLR предоставит вам очень мощный механизм кэширования - возможно, более сильно оптимизированный, чем вы могли бы реально сделать самостоятельно. Кроме того, у вас больше шансов получить хорошую совместимость с другими языками, так как вы будете использовать «стандартный» протокол динамических объектов.

Например, C # 4 сможет звонить на ваш язык без дополнительной работы, просто используя тип dynamic. Чтобы сделать это без DLR, вам нужно сгенерировать «нормальные» статические типы CLR.

Трудно точно сказать, сколько будет преимуществ, потому что мы не знаем, для чего вы хотите использовать свой язык или сколько он уже делает. Тем не менее, очевидно, что над DLR работает много очень умных людей - мне кажется, что если вы создаете динамический язык для работы в .NET, имело бы смысл воспользоваться их работой.

2 голосов
/ 24 июня 2009
  • Доступ к библиотеке базовых классов .Net и типы
  • Доступ к сторонним библиотекам, написанным для .Net
  • Вы можете позволить Microsoft беспокоиться об обслуживании API (обновления безопасности и т. Д.)
  • Вы можете разместить язык в Visual Studio
2 голосов
/ 24 июня 2009

Полный доступ к .NET Framework - самый большой.

...