Я ищу способ управления зависимостями между грамматиками в нескольких системах .NET.
У меня есть несколько библиотек .NET, которые используют языки для конкретных приложений:
- Библиотека для вычисления выражений, указанных во время выполнения,
- Библиотека для выполнения запросов к базе данных приложения,
- Библиотека для выполнения нескольких взаимозависимых вычислений,
- Aнесколько других проектов с их собственными небольшими языками
Вот диаграмма, показывающая зависимости между моими библиотеками и их комбинациями лексера / парсера:
Стрелки показывают зависимости между различными частями моей системы:
- Зависимости между библиотекой и ее грамматикой,
- Зависимости между модулями .NET, представленные в нашей системе сборки (MSBuild) и
- Зависимости на уровне источника между грамматиками с помощью директивы
import
в файле грамматики.
Зависимости первыхt и второй вид (показанный синими стрелками) отлично управляются системой сборки и не вызывают у нас никаких проблем.Однако зависимости третьего типа (красные стрелки) требуют, чтобы исходный код грамматики выражения был доступен при компиляции грамматики запроса.Этот тип зависимости напрямую не поддерживается системой сборки, и это останавливает попытку модульной системы.
Я обошел все технические аспекты этой проблемы, скопировав исходные файлы грамматики выражений в общую папку.во время сборки, чтобы сборка зависимой библиотеки могла взять ее оттуда.Однако логика остается нарушенной, поскольку копирование создает скрытую зависимость, о которой система сборки не знает.
Я ищу решение, которое позволяет системе сборки управлять этой исходной зависимостью или полностью ее устраняет.