Я только что натолкнулся на Ирония , которая определяет себя как ".NET Language реализационный комплект".Это работает действительно здорово.Я использовал его для более простой задачи: преобразование пользовательских запросов в выражения, совместимые с SQL-сервером CONTAINS
, как описано в этой статье (которая может быть хорошей отправной точкой для понимания того, что делает Irony).
Вот описание их проекта на Codeplex:
Irony - это комплект для разработки языков для реализации на платформе .NET.В отличие от большинства существующих решений в стиле yacc / lex, Irony не использует никакой сканер или генерацию кода анализатора из спецификаций грамматики, написанных на специализированном метаязыке.В Irony грамматика целевого языка кодируется непосредственно в c # с использованием перегрузки операторов для выражения грамматических конструкций.Модули сканера и синтаксического анализатора Irony используют грамматику, закодированную как класс c #, для управления процессом синтаксического анализа.
Итак, это «официально» инструмент для реализации языка , но вы можете полностью использовать его только для проверки синтаксиса.