Re[5]: Указать контекст синтаксической макры
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.10 18:38
Оценка:
Здравствуйте, Ziaw, Вы писали:

VD>>Защита от дурака — это система типов. Просто делай так чтобы твои макросы генерировали хорошо типизированные выражения которые будут не применимы в не других контекстах, а компилятор проверит это и выдаст сообщения об ошибках.


Z>Не шибко внятное, типа метода не нашел например.


У меня ощущение, что я смотрю эпизод из "Звездных войн" с участием Ёды.
Какой пример нужен?

Z>Да тут я конечно перегнул с лаконичностью ) просто хотелось иметь возможность передать аст в проект который дебажится и посмотреть его структуру. Сложно писать анализатор того, что неизвестно как выглядит. Может быть из макры распечатеть его в удобном виде можно?


Ты можешь отлаживать сами макросы и смотреть на получаемый код прямо в Wath. Самый простой способ это сделать — воткнуть в код assert2(false); и нажать на Retry когда появится окно (во время компиляции).

Кроме того у любого куста АСТ (PExpr, например) есть метод ToString(). С его помощью можно получить текст (сгенерированный) макроса. Его можно прямо в код куда-то засунуть, если надо.

Кроме того при добавлении методов можно использовать не Define, а DefineWithSource (поищи его использование в коде компилятора и сниппетов). Это приводит к тому, что для добавленных таким образом методов будет сгенерирован исходный код по которому можно будет осуществлять отладку.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.