1

我在 Boo 中创建嵌套宏,我编写了这个程序:

macro text:
  macro subMacro:
    text["Text"] = "Hello World"

  return [|
    block:  
      System.Console.WriteLine( "Hello World" );
  |]

但我在代码的第 3 行收到错误“未知标识符:'文本'”。

4

1 回答 1

1

您遇到的错误可能与调用宏的代码中缺少导入有关。

例如,如果您的宏位于名为 foo 的命名空间中,则需要添加

import foo

在调用代码的顶部。

修复此编译器问题后,您可能会遇到的第二个问题是错误

“未知标识符‘块’(BCE0005)

要解决此问题,.Body请在 quasi-quotation 部分之后添加一个,如下所示:

import Boo.Lang.Compiler.Ast

macro text:
    macro subMacro:
        text["Text"] = "Hello world"

    return [|
        block:
            System.Console.WriteLine("Hello World");
    |].Body

编辑-恕我直言,宏有点像黑暗艺术。如需更多帮助,您应该尝试boo 邮件列表,或 BOO 中的优秀DSL

于 2010-02-02T19:30:48.027 回答