灵活的编译器管道定义

时间:2020-03-05 18:53:14  来源:igfitidea点击:

我正在为.NET开发一个编译器框架,并希望使用一种灵活的方式来定义管道。我考虑了以下选项:

  • 世界自然基金会
  • 自定义XML管道描述
  • 代码中的自定义管道描述(使用Nemerle的宏为其定义语法)
  • 其他基于代码的描述

要求:

  • 不得仅依赖于更高版本的.NET(3+)中的功能,因为它旨在跨平台并在托管内核之上使用,这意味着.NET具有半受限功能。
  • 必须允许有条件的管道构建,因此我们可以指定某些命令行选项将与某些元素和顺序相对应。

WWF会很好,但不满足第一个要求。其他的会工作,但由于涉及的工作而并非最佳。

有人知道没有任何改动就能实现这些目标的解决方案吗?

解决方案

回答

如果我们了解Ruby,那么一个解决方案是编写一个简单的内部DSL,它可以生成所需的任何管道数据类型和读取器/写入器代码。生成XML是快速入门。如果需要,我们以后总是可以更改DSL以生成另一种格式。

我们可能还希望查看Microsoft Phoenix编译器项目以获取启发。

回答

我知道Boo让我们从编译器中获得乐趣,不确定它是否以我们想要的方式运行。