![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вкуриваю полезную вещь, на которую мне кто-то когда-то дал ссылку - Text Template Transformation Toolkit - шаблонизатор-кодогенератор, встроенный в Visual Studio.
Всем полезная штука, но что-то мне кажется, что кодогенерация прямо в текст - это уныние и печаль. Вот генерить AST, а потом из него генерить код на целевом языке - более правильный подход. Правда, что в первом, что во втором случае, шаблоны для кодогенератора выглядят нечитабельным адом.
PS: Написал на T4 генератор иммутабельных классов:
ROEntity.tt - генератор
ROEntityTest.tt - пример использования
ROEntityTest.generated.cs - результат кодогенерации
Всем полезная штука, но что-то мне кажется, что кодогенерация прямо в текст - это уныние и печаль. Вот генерить AST, а потом из него генерить код на целевом языке - более правильный подход. Правда, что в первом, что во втором случае, шаблоны для кодогенератора выглядят нечитабельным адом.
PS: Написал на T4 генератор иммутабельных классов:
ROEntity.tt - генератор
ROEntityTest.tt - пример использования
ROEntityTest.generated.cs - результат кодогенерации
no subject
Date: 2010-08-06 12:37 pm (UTC)Полностью согласен; вот правда если бы был еще AST под всё что можно...
no subject
Date: 2010-08-06 01:19 pm (UTC)no subject
Date: 2010-08-06 01:19 pm (UTC)no subject
Date: 2010-08-09 05:02 pm (UTC)no subject
Date: 2010-08-09 06:01 pm (UTC)А то для простейшей задачи типа вычисления выражения или подсчёта статистики люди их строят - решая задачу в два прохода вместо одного и держа в памяти целое дерево вместо пути от корня к текущей ветке (да и тот живёт в стеке - сокращая код вдвое).
Я не против деревьев - я за обдумывание и выбор лучшего решения для каждого конкретного случая.