我正在寻找一种方法来管理多个.NET系统中语法之间的依赖关系。
我有几个使用特定于应用程序的语言的.NET库:
以下是显示我的库及其词法分析器/解析器组合之间的依赖关系的图:
箭头显示系统各部分之间的依赖关系:
import
指令,语法之间的源级别依赖关系。第一类和第二类的依赖关系(用蓝色箭头显示)由构建系统完美地管理,不会对我们造成任何问题。但是,第三种类型的依赖关系(红色箭头)要求在编译查询语法时可以使用表达式语法的源代码。构建系统未直接支持这种依赖关系,这破坏了对系统进行模块化的尝试。
我通过在构建时将表达式语法的源文件复制到共享位置来解决此问题的技术问题,以便从属库的构建可以从那里进行提取。但是,逻辑仍然无法解决,因为复制会创建构建系统不知道的隐藏依赖项。
我正在寻找一种解决方案,该解决方案可以使构建系统管理或完全消除源依赖。
答案 0 :(得分:1)
您可以将所有语法放在一个单独的项目(例如“解析器”库)中,该项目为其他库/引擎提供基本的解析功能:
(ExpressionParser, QueryParser, ComputingEngineParser) <--- [Parsers.DLL]
[Parsers.DLL] <--- [ExpressionLibrary.DLL]
<--- [QueryLibrary.DLL]
<--- [ComputingEngine.EXE]