代码之家  ›  专栏  ›  技术社区  ›  Neo

如何在boo中创建嵌套宏

boo
  •  1
  • Neo  · 技术社区  · 16 年前

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

    macro text:
      macro subMacro:
        text["Text"] = "Hello World"
    
      return [|
        block:  
          System.Console.WriteLine( "Hello World" );
      |]
    

    但我得到的错误是“未知身份: 文本 “在代码的第三行。

    1 回复  |  直到 14 年前
        1
  •  1
  •   matt    16 年前

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

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

    import foo
    

    在呼叫代码的顶部。

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

    “未知标识符”块(bce0005)

    要解决此问题,请添加 .Body 在类似这样的准报价部分之后:

    import Boo.Lang.Compiler.Ast
    
    macro text:
        macro subMacro:
            text["Text"] = "Hello world"
    
        return [|
            block:
                System.Console.WriteLine("Hello World");
        |].Body
    

    编辑-imho宏是一种有点黑暗的艺术。要获得更多帮助,您应该尝试 boo mailing list ,或优秀的 DSLs in BOO

    推荐文章