implementing a language with llvm