Мета-программирование на нескольких языках вывода

Я ищу способ написать и поддерживать определенный алгоритм (фактически, подмодуль отрисовки графики в моем коде) только один раз. Мне нужен алгоритм на C ++, PHP и Javascript. Теоретически я мог бы написать его на C ++ и обернуть в расширение PHP; но это само по себе имеет много проблем и не решает ссылку на Javascript.

Я думаю, что я ищу инструмент, который преобразует язык (неважно, какой) в три (или во-вторых, если исходный язык является одним из трех) языков вывода, на которые я нацелен. Я нашел MetaL (http://www.meta-language.net/), который, кажется, делает то, что я хочу, но также выглядит мертвым (без обновлений с 2007 года) и нацелен только на один из трех языков, которые мне нужны. Он должен быть достаточно гибким и позволять мне обновлять результаты - например, я использую Cairo в моем рендеринге на C ++ и PHP, а HTML Canvas на стороне Javascript. Поэтому мне нужно настроить API для определенных эффектов.

В качестве альтернативы, я бы согласился на синтаксический анализатор и лексер PHP, который дал бы мне AST с достаточной информацией, чтобы я мог писать генераторы для C ++ и Javascript в качестве альтернативного бэкэнда.

Есть идеи? Спасибо.

12
задан Roel 18 April 2011 в 08:17
поделиться