2008-09-15 46 views
3

我正在爲.NET開發一個編譯器框架,並希望能夠靈活地定義管道。我已經考慮了以下選項:靈活的編譯器管道定義

  • WWF
  • 自定義XML流水線描述
  • 代碼
  • 定製流水線描述(使用Nemerle的宏來定義它的語法)
  • 其他基於代碼的描述

要求:

  • 必須不僅僅依賴於.NET(3+)的更高版本的功能,因爲它旨在跨平臺並在託管內核之上使用,這意味着半限制的.NET功能。
  • 必須允許有條件的管道構建,因此您可以指定某些命令行選項將對應某些元素和順序。

WWF會很好,但不符合第一個要求。其他人會工作,但由於所涉及的工作不夠理想。

有沒有人知道一個解決方案,將滿足這些目標,幾乎沒有修改?

回答

1

如果您瞭解Ruby,那麼一個解決方案就是編寫一個簡單的內部DSL,它可以生成任何流水線數據類型和您需要的讀寫器代碼。生成XML是一種快速入門的方式。如果需要,您可以隨時更改DSL以生成其他格式。

您可能還想看看Microsoft Phoenix compiler項目的靈感。

+0

這與使用Nemerle宏定義這些管道的語法類似,只不過宏在編譯時會翻譯所有內容。從可用性的角度來看,這是一個很好的解決方案,但它需要很多工作才能將它放在一起。 – 2008-09-15 19:26:39

0

我知道Boo讓你對編譯器感興趣,不確定它是否以你想要的方式工作。