We should refactor compilers and get next compilers:
AbstractCompiler - like an interface for all compilers.
Compiler - compile everything, aggregate GraphCompiler, NativeCompiler, DataCompiler, SourceCodeCompiler;
GraphCompiler - for all kinds of graps. Compiles graph into memory structutres
NativeCompiler - for compile actual source code with external compiler.
SourceCodeCompiler - abstract, compiles stuctures in memory into real source code
-> <certainlanguage>Compiler</certainlanguage> - derives from SourceCodeCompiler and compiles in actual language.
CompilerFactory - factory of Compiler, builds certain Copiler depends on provided settings;
Anonymous