Огромным недостатком использования другого текстового языка в качестве бэкэнда для вашего языка является потеря точной отладочной информации - переменных, местоположений и т. Д. c.
Если вы используете язык с расширенными возможностями метаданные, такие как LLVM IR (и да, это не намного ниже уровня C в любом случае), вы можете заполнить всю необходимую отладочную информацию. Нацелить LLVM почти так же легко, как и C.
. Другой альтернативой, если вы хотите извлечь выгоду из функций языка очень высокого уровня и создать свой новый язык поверх, является использование расширяемого языка в качестве основы - например, , реализуйте свой язык как расширение синтаксиса поверх Racket или Common Lisp.