我尝试使用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'
我该如何解决这些问题?
答案 0 :(得分:3)
您只需添加 Nemerle.Compiler.dll 作为项目的参考。此外,一些更复杂的准引号只能在宏中工作。
using Nemerle.Compiler;
using System.Console;
macro Test()
{
def x = <[ while (true) WriteLine(4) ]>.ToString();
<[ WriteLine($x) ]>
}
答案 1 :(得分:2)
准引用旨在用于宏。他们需要编译器的上下文。创建一个宏库项目,并在其中使用准引用。