2009-06-24 4 views
3

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

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

ответ

2

Полный доступ к платформе .NET является большой.

2
  • Доступ к базовой библиотеки классов .Net и типов
  • Доступ к сторонних библиотек, написанных для .Net
  • Вы можете позволить Microsoft беспокоиться о обслуживании API (обновления для системы безопасности и т.д.)
  • You может размещать язык в Visual Studio
4

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

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

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

+0

Спасибо Jon, несколько хороших мотивов там особенно динамичный. Хотелось бы, чтобы я сделал это для вашей презентации в пробке с открытым исходным кодом. – Jason

+0

Это было всего 5 минут - никаких деталей вообще. Я почти закончил динамическую главу C# в Depth, поэтому, чтобы это было доступно в ближайшее время. –