Здравствуйте, Mystic, Вы писали:
Это все в одном файле что ли?
M>using System.Console;
M>using Nemerle.Compiler;
M>macro BeginEnd (body)
M>syntax ("begin", body, "end")
M>{
M> <[
M> () // Пока все игнорируем, потом добавится что-то вроде $body
M> ]>
M>}
M>WriteLine("Hello, World!");
M>begin
M> WriteLine("Hello, begin/end!"); // <--- 16-я строка
M>end;
M>
M>Но такое ощущение, что даже после прочтения статей вообще непонятно, как оно все работает
Мне кажется, что если прочитать Язык Nemerle:
Язык Nemerle Часть 1Автор(ы): Владислав Юрьевич Чистяков
Дата: 24.09.2009
Эта статья открывает цикл статей, посвященных обучению языку программирования Nemerle. Имеющиеся статьи об этом языке предполагают, что программист хорошо знаком с Microsoft .NET Framework и языком программирования C#. Данный же цикл статей, напротив, рассчитан на людей, не знакомых ни с тем, ни с другим, и может быть даже применен для изучения программирования как такового. Новичкам в программировании может потребоваться помощь людей, уже знающих программирование.
Язык Nemerle Часть 2Автор(ы): Чистяков Владислав Юрьевич
Дата: 30.06.2010
Неформальное введение в язык программирования Nemerle. В этой части, на базе примера «калькулятор», описываются типы данных variant и class.
и воспроизвести все приведенные примеры, то все станет ясно и очевидно. Очень советую так и поступить.
Что касается данной проблемы, то код макроса совершенно корректен.
Проблема может быть в том, что:
1. Ты пытаешься скомпилировать код использующий макрос из того же проекта в котором макрос объявлен. Это невозможно. Макрос должен находиться в отдельной (специализированной) сборке. В проекте использующем макрос должна быть ссылка на проект (сборку) содержащий макрос.
2. Для использования синтаксических макросов нужно открыть пространство имен в котором объявлен синтаксический макрос (но судя по коду он объявлен вне пространства имен).