В качестве подтверждения концепции я написал переводчик, который преобразует небольшое подмножество JavaScript в Java. Он основан на библиотеке transpiler для SWI-Prolog:
:- use_module(library(transpiler)).
:- set_prolog_flag(double_quotes,chars).
:- initialization(main).
main :-
Input = "function add(a,b){return a+b;} function squared(a){return a*a;} function add_exclamation_point(parameter){return parameter+\"!\";}",
translate(Input,'javascript','java',X),
atom_chars(Y,X),
writeln(Y).
Это исходный код Java, сгенерированный этой программой:
public static String add(String a,String b){
return a+b;
}
public static int squared(int a){
return a*a;
}
public static String add_exclamation_point(String parameter){
return parameter+"!";
}