Backends

METALS is a common intermediate language. It does not come with any implementations by itself. That’s where backends come in. Compilers that target METALS as a common intermediate language. Backends typically have two functions.

  • Compile any high-level language to METALS
  • Decompile/Transpile METALS back into the specific high-level language.

Since decompilation and compilation don’t have much in common, it’s typically not possible to use the same META implementation of a language to compile and decompile.