Re: Макрос, потуги что-нить написать...
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.04.10 17:50
Оценка:
Здравствуйте, 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. Для использования синтаксических макросов нужно открыть пространство имен в котором объявлен синтаксический макрос (но судя по коду он объявлен вне пространства имен).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.