灵活的编译器管道定义

发布于 2024-07-05 21:34:46 字数 401 浏览 7 评论 0原文

我正在开发 .NET 编译器框架,并且需要一种灵活的方式来定义管道。 我考虑了以下选项:

  • WWF
  • 自定义 XML 管道描述
  • 代码中的自定义管道描述(使用 Nemerle 的宏定义其语法)
  • 其他基于代码的描述

要求:

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

WWF 会很好,但不符合第一个要求。 其他的可以工作,但由于涉及的工作而不太理想。

有谁知道有一种解决方案可以在几乎不需要修改的情况下实现这些目标?

I'm developing a compiler framework for .NET and want a flexible way of defining pipelines. I've considered the following options:

  • WWF
  • Custom XML pipeline description
  • Custom pipeline description in code (using Nemerle's macros to define syntax for it)
  • Other code-based description

Requirements:

  • Must not depend on functionality only in the later versions of .NET (3+) since it's intended to be cross-platform and be used on top of managed kernels, meaning semi-limited .NET functionality.
  • Must allow conditional pipeline building, so you can specify that certain command line options will correspond to certain elements and orders.

WWF would be nice, but doesn't meet the first requirement. The others would work but are less than optimal due to the work involved.

Does anyone know of a solution that will meet these goals with little to no modification?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

混浊又暗下来 2024-07-12 21:34:46

我知道 Boo 让您享受编译器的乐趣,但不确定它是否按照您想要的方式工作。

I know Boo let you have fun with the compiler, not sure if it does in the manner you want.

淡淡の花香 2024-07-12 21:34:46

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

您可能还想查看 Microsoft Phoenix 编译器 项目以获取灵感。

If you know Ruby then a solution is to write a simple internal DSL that can generate whatever pipeline data types and reader/writer code you need. Generating XML is a quick way to get started. You can always change the DSL to generate another format later if required.

You may also want to look at the Microsoft Phoenix compiler project for inspiration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文