Каковы основные преимущества перехода на DLR для моего языка сценариев?

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

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


person Jason    schedule 24.06.2009    source источник


Ответы (3)


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

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

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

person Jon Skeet    schedule 24.06.2009
comment
Спасибо, Джон, есть несколько хороших мотивов, особенно динамический тип. Хотел бы я попасть на вашу презентацию на джеме с открытым исходным кодом. - person Jason; 24.06.2009
comment
Всего 5 минут - никаких подробностей. Я почти закончил динамическую главу C # in Depth, так что скоро она должна быть доступна. - person Jon Skeet; 24.06.2009

Полный доступ к .NET framework - это очень важно.

person Lou Franco    schedule 24.06.2009

  • Доступ к библиотеке и типам базовых классов .Net
  • Доступ к сторонним библиотекам, написанным для .Net
  • Вы можете позволить Microsoft позаботиться об обслуживании API (обновлениях безопасности и т. Д.)
  • Вы можете разместить язык в Visual Studio
person Joel Coehoorn    schedule 24.06.2009