1

私はBooでネストされたマクロを作成しています、私はこのプログラムを書きました:

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

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

しかし、コードの3行目に「UnknownIdentifer:' text '」というエラーが表示されます。

4

1 に答える 1

1

発生するエラーは、マクロが呼び出されているコードにインポートがないことが原因である可能性があります。

たとえば、マクロがfooという名前の名前空間にある場合は、次を追加する必要があります。

import foo

呼び出し元のコードの上部。

このコンパイラの問題を修正すると発生する可能性のある2番目の問題は、エラーです。

「不明な識別子'ブロック'(BCE0005)

これを修正するには、.Body次のような準引用セクションの後にを追加します。

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 に答える