Поиск рекомендаций для кросс-компилятора, который генерирует идиоматический код. Вариант использования - это примеры кода для проекта с открытым исходным кодом, однако в настоящее время они должны быть написаны на разных языках, дублируя усилия. Идея заключается в том, что пользователи библиотеки должны иметь возможность смотреть на сгенерированный код и «чувствовать себя как дома».
Я проверил Haxe для этой цели, но не получил нужные мне результаты. Например, этот код:
class HelloWorld {
static public function main() {
trace("Hello World");
}
}
Создает довольно плохой интерфейс IDE для конечного пользователя:
@SuppressWarnings(value={"rawtypes", "unchecked"})
public class HelloWorld extends haxe.lang.HxObject
{
public HelloWorld(haxe.lang.EmptyObject empty)
{
}
public HelloWorld()
{
//line 1 "/usr/local/google/home/nbirnie/git/test/HelloWorld.hx"
haxe.root.HelloWorld.__hx_ctor__HelloWorld(this);
}
public static void __hx_ctor__HelloWorld(haxe.root.HelloWorld __hx_this)
{
}
public static void main()
{
//line 3 "/usr/local/google/home/nbirnie/git/test/HelloWorld.hx"
haxe.Log.trace.__hx_invoke2_o(0.0, "Hello World", 0.0, new haxe.lang.DynamicObject(new java.lang.String[]{"className", "fileName", "methodName"}, new java.lang.Object[]{"HelloWorld", "HelloWorld.hx", "main"}, new java.lang.String[]{"lineNumber"}, new double[]{((double) (((double) (3) )) )}));
}
}
Для этого всегда есть возможность написания предметно-ориентированного языка - фактический объем сгенерированного кода будет довольно небольшим, может быть, 100 строк на класс, без связи между классами. Но подумал, что сначала я буду искать готовые решения.