灵活的编译器管道定义
时间:2020-03-05 18:53:14 来源:igfitidea点击:
我正在为.NET开发一个编译器框架,并希望使用一种灵活的方式来定义管道。我考虑了以下选项:
- 世界自然基金会
- 自定义XML管道描述
- 代码中的自定义管道描述(使用Nemerle的宏为其定义语法)
- 其他基于代码的描述
要求:
- 不得仅依赖于更高版本的.NET(3+)中的功能,因为它旨在跨平台并在托管内核之上使用,这意味着.NET具有半受限功能。
- 必须允许有条件的管道构建,因此我们可以指定某些命令行选项将与某些元素和顺序相对应。
WWF会很好,但不满足第一个要求。其他的会工作,但由于涉及的工作而并非最佳。
有人知道没有任何改动就能实现这些目标的解决方案吗?
解决方案
回答
如果我们了解Ruby,那么一个解决方案是编写一个简单的内部DSL,它可以生成所需的任何管道数据类型和读取器/写入器代码。生成XML是快速入门。如果需要,我们以后总是可以更改DSL以生成另一种格式。
我们可能还希望查看Microsoft Phoenix编译器项目以获取启发。
回答
我知道Boo让我们从编译器中获得乐趣,不确定它是否以我们想要的方式运行。