Комментарии 7
НЛО прилетело и опубликовало эту надпись здесь
Ну, во-первых, полезно знать как работает Ваш инструмент:) Во-вторых, я этот цикл подвожу к теме написания расширений к компилятору. Тёмными ночами у меня тут варится платформа для написания кодогенераторов для AS3 в виде расширений компилятора (т.е. с полным доступом к AbstractSyntaxTree).
При этом расширения — это обычные jar файлы, которые подключаются через flex-config.xml (секция extensions), т.е. исходный компилятор не меняется.
Например за вчерашний день мне удалось написать вот такое расширение:
gist.github.com/bsideup/adcf66c2741759ababe1
Позволяет пометив интерфейс метатегом [Trait] добавлять реализованные в нём методы в класс, который имплементирует этот интерфейс.
К слову, [Binding], [SkinPart], [Frame] и ещё куча генерирующих код метатегов сделаны именно в виде расширений, которые сразу идут «в комплекте» с Flex Compiler.
При этом расширения — это обычные jar файлы, которые подключаются через flex-config.xml (секция extensions), т.е. исходный компилятор не меняется.
Например за вчерашний день мне удалось написать вот такое расширение:
gist.github.com/bsideup/adcf66c2741759ababe1
Позволяет пометив интерфейс метатегом [Trait] добавлять реализованные в нём методы в класс, который имплементирует этот интерфейс.
К слову, [Binding], [SkinPart], [Frame] и ещё куча генерирующих код метатегов сделаны именно в виде расширений, которые сразу идут «в комплекте» с Flex Compiler.
+1
Сложно придумать что-то, что было бы полезно и при этом имело не слишком много минусов, а минусы это отсутствие поддержки в ИДЕ, непонятный код для других программистов, необходимость писать и поддерживать расширение компилятора. Была некоторая надежда на Relaxy, но он задержался.
Для простых задач можно использовать, например, as3-bytecode библиотеку, я делал на ней автоматическую имплементацию интерфейсов. Те же трейты, если хочется можно сделать через prototype.
Можно использовать antlr (вроде есть as3 таргет), если хочется погенерить код.
Для простых задач можно использовать, например, as3-bytecode библиотеку, я делал на ней автоматическую имплементацию интерфейсов. Те же трейты, если хочется можно сделать через prototype.
Можно использовать antlr (вроде есть as3 таргет), если хочется погенерить код.
0
Всё описанное я проходил уже ни раз:)
Суть конкретно этого подхода в том, чтобы писать на уровне компилятора, с тем же AST, что доступен самому компилятору. Relaxy (который нынче Code Orchestra) не задержался, недавно вроде даже зарелизили 2ю версию, но лично для меня (и фирм где работал) проблема в том, что это IDE-зависимый код. Вот если бы у MPS была возможность скармливать ей исходники, чтобы она строила из него AST, а потом уже из него генерировала финальные исходники — тогда да:)
Суть конкретно этого подхода в том, чтобы писать на уровне компилятора, с тем же AST, что доступен самому компилятору. Relaxy (который нынче Code Orchestra) не задержался, недавно вроде даже зарелизили 2ю версию, но лично для меня (и фирм где работал) проблема в том, что это IDE-зависимый код. Вот если бы у MPS была возможность скармливать ей исходники, чтобы она строила из него AST, а потом уже из него генерировала финальные исходники — тогда да:)
0
При написании C.O.L.T возникло желание найти писателей mxmlc и хорошенько побить. Душевно так. Такой бредовый код и реализацию нужно еще поискать.
0
про C.O.L.T. тут — codeorchestra.com
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
MXML компилятор. Часть 3. Разбираемся в работе Flex-компилятора