Единственный способ, о котором я могу думать, - использовать интерпретатор brainfuck, написанный в brainfuck для запуска программы (например, dbfi). С некоторыми изменениями вы можете добавить новые инструкции, такие как LBL и GOTO.
Проблема только в том, что она будет очень медленной. Другая проблема заключается в том, что вам нужно будет сохранить настоящую программу brainfuck на ленте памяти (самый простой способ сделать это - ввести программу, как это делает dbfi). Для более «чистого» способа сделать это вам придется сделать программу brainfuck, которая поместит фактическую программу на ленту памяти, таким образом, чтобы интерпретатор мог ее читать и запускать.
Это, конечно, не очень элегантный метод, но я думаю, что на самом деле это может работать очень хорошо, хотя это, безусловно, будет очень медленным.
Спасибо, компилятор для BF - это именно то, что я имел в виду. Чтобы реализовать не только goto, но и рекурсию общего назначения и указатель на функции, мне понадобится инструкция goto. – vz0