Реализация циклов Brainfuck в интерпретаторе

Я хочу создать интерпретатор Brainfuck (чёрт возьми, это имя) на моем только что созданном языке программирования, чтобы доказать его полноту по Тьюрингу.

Теперь все понятно пока (<>+-,.) - кроме одного: петли ([]). Я предполагаю, что вы знаете (очень жесткий) синтаксис BF с этого момента:

Как реализовать циклы BF в моем интерпретаторе?

Как может выглядеть псевдокод? Что делать, когда интерпретатор достигает начала цикла ([) или конец цикла (])?

Проверка, должен ли цикл продолжаться или останавливаться, не является проблемой (current cell==0), но:

Когда и где я должен проверить?Как узнать, где находится начало цикла?Как обрабатывать вложенные циклы?

Поскольку циклы могут быть вложенными, я предполагаю, что я не могу просто использовать переменную, содержащую начальную позицию текущего цикла.

Я видел очень маленькие интерпретаторы BF, реализованные на разных языках, мне интересно, как им удалось заставить работать циклы, но я не могу понять это.

Ответы на вопрос(5)

Ваш ответ на вопрос