Я закончил работу над 5-й частью посвященной макросам:
http://www.rsdn.ru/article/nemerle/Nemerle-macros-intro.rsdnml.xmlАвтор(ы): Чистяков Владислав Юрьевич
Дата: 22.09.2011
Данная часть посвящена макросам Nemerle.
Просьба поглядеть и высказать свои замечания.
В этой версии основные арфаграфические ашипки исправлены, так что если заметите их, то сообщайте и о них (в такой объемной работе их не пропустить невозможно).
Здравствуйте, VladD2, Вы писали:
VD>Я закончил работу над 5-й частью посвященной макросам:
VD>http://www.rsdn.ru/article/nemerle/Nemerle-macros-intro.rsdnml.xmlАвтор(ы): Чистяков Владислав Юрьевич
Дата: 22.09.2011
Данная часть посвящена макросам Nemerle.
VD>Просьба поглядеть и высказать свои замечания.
"Макросы уровня выражения используются для генерации кода внутри
тел метода и для расширения синтаксиса выражений."
(тела?)
"во время работы компилятора командной строки, в котором тела методов обрабатываются ровно один раз"
Разве при возникновении ошибки компилятор не делает повторный проход?
другим вызовом этого же (или другого макроса
).
скобка не на месте
Здравствуйте, VladD2, Вы писали:
VD>Я закончил работу над 5-й частью посвященной макросам:
VD>http://www.rsdn.ru/article/nemerle/Nemerle-macros-intro.rsdnml.xmlАвтор(ы): Чистяков Владислав Юрьевич
Дата: 22.09.2011
Данная часть посвящена макросам Nemerle.
VD>Просьба поглядеть и высказать свои замечания.
VD>В этой версии основные арфаграфические ашипки исправлены, так что если заметите их, то сообщайте и о них (в такой объемной работе их не пропустить невозможно).
Нашел ошибку в статье, в конце при описании запуска компилятора на отладку с помощью response файла из ide есть ошибка, параметры в файле нельзя задавать через слэш, /debug, нужно везде писать -debug и тп, иначе компилятор выдаст ошибку.
Здравствуйте, VladD2, Вы писали:
VD>В этой версии основные арфаграфические ашипки исправлены, так что если заметите их, то сообщайте и о них (в такой объемной работе их не пропустить невозможно).
Название раздела и текст с ошибкой:
Дополнительные параметры макроса
Token – токен (лексема). Подробнее см. раздел лексический анализ в Wikipedia. Примерами токенов являются ключевые слова (for, match, class), идентификаторы (например, имена переменных), операторы, скобки, литералы («"строка"», «42»). Тонены в Nemerle 1.х «сворачиваются» в группы. Есть следующие типы групп: LooseGroup, QuoteGroup (квази-цитата), SquareGroup (квадратные скобки), BracesGroup (фигурные скобки) и RoundGroup (круглые скобки). LooseGroup объединяет ряд идущих друг за другом токенов. Остальные объединяют токены, заключенные в тот или иной тип скобок. Таким образом, описывая параметр как Token, вы получаете не один токен, а (возможно) иерархию токенов. Это позволяет создавать сложные синтаксические расширения, не подчиняющиеся синтаксису Nemerle, но соответствующие лексическим правилам Nemerle. Более подробную информацию о токенах можно почерпнуть из цикла статей "Макросы Nemerle – расширенный курс".
Сплайсы
ПРИМЕЧАНИЕ
Те кто пытается изучать код компилятора, зачастую, задают вопрос – что означает паттерн <[ @*(..$args) ]>? Этот паттерн разбирает оператор «*». Дело в том, что в AST Nemerle операторы отражаются как вызов обычный функции именем которой является имя оператор. Знак «@» позволяет преобразовать ключевое слов или оператор в допустимое имя Nemerle. Посмотрите как объявлялся макро-оператор «&&», в первой части «Язык Nemerle». Он так же был обвялен в префиксной форме, а перед его именем добавлен знак «@». Однако это не мешает применению данного оператора в инфиксной форме.
Отладка макросов
СОВЕТ
Если собрать компилятор Nemerle и интеграцию из исподников, то можно будет отлаживать не только код ваших макросов, но и код компилятора. О том, как собрать код Nemerle из исходников, написано здесь.