Как создать вложенный макрос в Boo - PullRequest
1 голос
/ 29 января 2010

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

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

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

Но я получаю сообщение об ошибке "Неизвестный идентификатор: ' текст '" в 3-й строке кода.

1 Ответ

1 голос
/ 02 февраля 2010

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

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

РЕДАКТИРОВАТЬ - ИМХО макросы немного темного искусства. Для получения дополнительной помощи вы должны попробовать список рассылки boo или отличные DSL в BOO

...