2

我尝试使用 Nemerle 的准引号在 Nemerle 中获取一个简单代码片段的 AST。

这是我试过的代码:

def ast() : void {
  System.Console.WriteLine(<["Test"]>)
}

我在IdeOne (ncc 0.9.3) 上运行它,我得到了这个错误:

prog.nem:2:30:2:36: error: unbound name `Literal.String'
prog.nem:2:30:2:36: error: unbound name `PExpr.Literal'

我该如何解决这些问题?

4

2 回答 2

3

您只需添加Nemerle.Compiler.dll作为对您项目的引用。此外,一些更复杂的准引号只能在宏中使用。

using Nemerle.Compiler;
using System.Console;

macro Test()
{
    def x = <[ while (true) WriteLine(4) ]>.ToString();
    <[ WriteLine($x) ]>
}
于 2012-05-13T02:50:05.220 回答
2

准引用旨在用于宏。他们需要编译器的上下文。创建一个宏库项目,并在其中使用准引用。

于 2012-05-13T20:08:37.967 回答