metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-07-19 09:25 am

Кодогенерация и метапрограммирование

Все-таки, несмотря на то, что функциональные языки (F#, в моем случае) очень удобны для кодогенерации - кодогенераторы получаются не очень адекватными.
Или огромные классы для описания AST целевых языков и сборка из них нужного кода, затем его pretty-printing или тупой вывод текста по шаблонам. В обоих случаях - код очень малочитабелен.
Для кодогенерации нужен какой-то специфический DSL, да еще с адаптацией под целевые языки.
В случае с метапрограммированием вроде его роль выполняет quasi-quotation, но там в итоге получается код только на том же языке на котором пишешь.

[identity profile] metaclass.livejournal.com 2011-07-19 10:54 am (UTC)(link)
А меня не уволят, если я попытаюсь еще одну оккультную хрень прикрутить к рабочим проектам?:)

[identity profile] permea-kra.livejournal.com 2011-07-19 12:40 pm (UTC)(link)
Она столь же оккультная, как и bison.

[identity profile] metaclass.livejournal.com 2011-07-19 12:56 pm (UTC)(link)
Так это ж парсеры, а я наоборот вроде код генерирую)
Впрочем тут и бизон оккультен.

[identity profile] permea-kra.livejournal.com 2011-07-19 04:18 pm (UTC)(link)
Не, ну вот тут гугль брешет, что CoCo/R умеет attribute grammars. Т.е не вижу проблемы, это вполне мейнстрим.

[identity profile] permea-kra.livejournal.com 2011-07-19 04:19 pm (UTC)(link)
А, хотя нет. Он attributeD grammar.

[identity profile] permea-kra.livejournal.com 2011-07-19 04:24 pm (UTC)(link)
Хе, а вот anltr (который умеет сишарп) вроде бы умеет.

xttp://www.antlr.org/blog/attribute.grammar.notes.tml