【问题标题】:Examples of Nemerle to generate c# code like T4 does像 T4 一样生成 c# 代码的 Nemerle 示例
【发布时间】:2023-04-03 11:15:02
【问题描述】:

我比 T4 更喜欢 Nemerle 的宏语法。是否有任何示例或者是否可以使用 Nemerle 生成 c# 代码,然后由实际的 Microsoft c# 编译器以类似于 T4 的方式用于输入。谢谢。

【问题讨论】:

    标签: visual-studio-2012 t4 nemerle


    【解决方案1】:

    Nemerle 宏不生成代码,而是在编译程序时修改程序的抽象语法树。但是,Nemerle 编译器可以读取 C#,您甚至可以在这些 C# 文件中使用 Nemerle 宏。

    【讨论】:

    • 是的,我意识到 Nemerle 的这一点,但我希望有人知道一些 .ToString 或类似的方法,这样我就可以获得宏将扩展为的 C#。谢谢
    • 您可以使用 Reflector 或 ILSpy 从已编译的程序集中生成 C# 代码。这与在 AST 上执行 .ToString() 并没有什么不同。
    【解决方案2】:

    我知道这个答案无关紧要,但是 Javascript 编译器有一个 Nemerle NemerleWeb

    类似的方法可用于生成 C# 文件。

    【讨论】:

      【解决方案3】:

      创建一个 Nemerle 到 C# prettyprinter 是可能的。但是,生成的代码会很丑(不可读)。

      【讨论】:

      • 例如给定 Nemerle 代码:match(a) { | X(一些(t)) => .. | X 当 someVar == 1 | _ => ... } 它创建了大量的代码,其中包含很多 ifs 和检查。你可以尝试反编译 Nemerle.dll 看看这个。
      猜你喜欢
      • 1970-01-01
      • 2010-09-22
      • 2013-11-18
      • 1970-01-01
      • 2016-09-06
      • 2013-10-03
      • 2011-03-22
      • 1970-01-01
      • 2011-08-02
      相关资源
      最近更新 更多