Макрос, потуги что-нить написать...
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 27.04.10 17:25
Оценка:
Попытался попробовать макросы Nemerle, но попытка написать что-то свое сразу же привело к ошибке. Причем по исправлению нет никаких идей

Такой код:

using System.Console;
using Nemerle.Compiler;

macro BeginEnd (body)
syntax ("begin", body, "end")
{
  <[
    () // Пока все игнорируем, потом добавится что-то вроде $body
  ]>
}

WriteLine("Hello, World!");

begin
  WriteLine("Hello, begin/end!"); // <--- 16-я строка
end;


в результате:

test.n:16:3:16:12: error: expected `;'
test.n:16:3:16:12: error: parse error near identifier `WriteLine': unexpected token after expression in sequence (you forget a closing bracket?).


Возникает вопрос: как это все можно отладить, чтобы увидеть то, что видит компилятор Nemerle???

Были варианты:

macro BeginEnd (body)
syntax ("begin", body, "end")
{
  <[
    $body
  ]>
}


macro BeginEnd (body)
syntax ("begin", body, "end")
{
  <[
    {
      $body
    }
  ]>
}


macro BeginEnd (body)
syntax ("begin", body, "end")
{
  <[
    def statement_body()
    {
      $body;
    } 
    statement_body()
  ]>
}


Но такое ощущение, что даже после прочтения статей вообще непонятно, как оно все работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.