Здравствуйте, Ziaw, Вы писали:
VD>>Защита от дурака — это система типов. Просто делай так чтобы твои макросы генерировали хорошо типизированные выражения которые будут не применимы в не других контекстах, а компилятор проверит это и выдаст сообщения об ошибках.
Z>Не шибко внятное, типа метода не нашел например.
У меня ощущение, что я смотрю эпизод из "Звездных войн" с участием Ёды.
Какой пример нужен?
Z>Да тут я конечно перегнул с лаконичностью ) просто хотелось иметь возможность передать аст в проект который дебажится и посмотреть его структуру. Сложно писать анализатор того, что неизвестно как выглядит. Может быть из макры распечатеть его в удобном виде можно?
Ты можешь отлаживать сами макросы и смотреть на получаемый код прямо в Wath. Самый простой способ это сделать — воткнуть в код assert2(false); и нажать на Retry когда появится окно (во время компиляции).
Кроме того у любого куста АСТ (PExpr, например) есть метод ToString(). С его помощью можно получить текст (сгенерированный) макроса. Его можно прямо в код куда-то засунуть, если надо.
Кроме того при добавлении методов можно использовать не Define, а DefineWithSource (поищи его использование в коде компилятора и сниппетов). Это приводит к тому, что для добавленных таким образом методов будет сгенерирован исходный код по которому можно будет осуществлять отладку.