Первое решение - использовать библиотеку libclang
для перевода исходного кода C / C ++ во что угодно.
Второе - написать бэкэнд LLVM, который будет преобразовывать IR LLVM в ваш язык (например, в C-бэкэнд).Это более гибко (IMO), но потребует от вас работать на гораздо более низком уровне, чем исходный код C ++.