Как стать автором
Обновить

Комментарии 7

НЛО прилетело и опубликовало эту надпись здесь
Ну, во-первых, полезно знать как работает Ваш инструмент:) Во-вторых, я этот цикл подвожу к теме написания расширений к компилятору. Тёмными ночами у меня тут варится платформа для написания кодогенераторов для AS3 в виде расширений компилятора (т.е. с полным доступом к AbstractSyntaxTree).
При этом расширения — это обычные jar файлы, которые подключаются через flex-config.xml (секция extensions), т.е. исходный компилятор не меняется.

Например за вчерашний день мне удалось написать вот такое расширение:
gist.github.com/bsideup/adcf66c2741759ababe1
Позволяет пометив интерфейс метатегом [Trait] добавлять реализованные в нём методы в класс, который имплементирует этот интерфейс.
К слову, [Binding], [SkinPart], [Frame] и ещё куча генерирующих код метатегов сделаны именно в виде расширений, которые сразу идут «в комплекте» с Flex Compiler.
Сложно придумать что-то, что было бы полезно и при этом имело не слишком много минусов, а минусы это отсутствие поддержки в ИДЕ, непонятный код для других программистов, необходимость писать и поддерживать расширение компилятора. Была некоторая надежда на Relaxy, но он задержался.

Для простых задач можно использовать, например, as3-bytecode библиотеку, я делал на ней автоматическую имплементацию интерфейсов. Те же трейты, если хочется можно сделать через prototype.

Можно использовать antlr (вроде есть as3 таргет), если хочется погенерить код.
Всё описанное я проходил уже ни раз:)

Суть конкретно этого подхода в том, чтобы писать на уровне компилятора, с тем же AST, что доступен самому компилятору. Relaxy (который нынче Code Orchestra) не задержался, недавно вроде даже зарелизили 2ю версию, но лично для меня (и фирм где работал) проблема в том, что это IDE-зависимый код. Вот если бы у MPS была возможность скармливать ей исходники, чтобы она строила из него AST, а потом уже из него генерировала финальные исходники — тогда да:)
При написании C.O.L.T возникло желание найти писателей mxmlc и хорошенько побить. Душевно так. Такой бредовый код и реализацию нужно еще поискать.
исходники Falcon уже читали?:)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации