2010-01-29 2 views
1

Я создаю вложенные макросы в Boo, я написал эту программу:Как создать вложенный макрос в Boo

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

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

Но я получаю ошибку «Неизвестные идентификтор:„текста“» в 3-е строки кода.

ответ

1

Ошибка, которую вы получаете, скорее всего, будет связана с отсутствием импорта в коде, из которого вызывается макрос.

Если макрос находится в пространстве имен с именем 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 

EDIT - ИМХО макросы немного темного искусства Для получения дополнительной помощи, вы должны попробовать boo mailing list или отличный DSLs in BOO

.