interface ProgramSource { ... } //Исходный код программы
interface ProgramExecutable { ... } //Скомпилированная программа
interface Compiler {
ProgramExecutable compile(ProgramSource sourceCode); //Собственно компилятор
}
class JavascriptCompiler implements Compiler { //Компилятор джаваскрипта
...
}
//Компилятор пользовательского языка
class UserDefinedCompiler extends JavascriptCompiler {
private final UserLanguage language;
UserDefinedCompiler(UserLanguage language) { ... }
...
}
class UserLanguage { //Класс описания пользовательского языка. Вот его и имеет смысл хранить в БД
...
}