私はBooでネストされたマクロを作成しています、私はこのプログラムを書きました:
macro text:
macro subMacro:
text["Text"] = "Hello World"
return [|
block:
System.Console.WriteLine( "Hello World" );
|]
しかし、コードの3行目に「UnknownIdentifer:' text '」というエラーが表示されます。
私はBooでネストされたマクロを作成しています、私はこのプログラムを書きました:
macro text:
macro subMacro:
text["Text"] = "Hello World"
return [|
block:
System.Console.WriteLine( "Hello World" );
|]
しかし、コードの3行目に「UnknownIdentifer:' text '」というエラーが表示されます。
発生するエラーは、マクロが呼び出されているコードにインポートがないことが原因である可能性があります。
たとえば、マクロが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を試してください。