Implementación de bucles Brainfuck en un intérprete

Quiero construir un intérprete Brainfuck (maldito sea ese nombre) en mi lenguaje de programación recién creado para demostrar que está completo.

Ahora, todo está claro hasta ahora (<>+-,.) - excepto una cosa: los bucles ([]) Supongo que conoce la sintaxis BF (extremadamente difícil) de aquí en adelante:

¿Cómo implemento los bucles BF en mi intérprete?

¿Cómo podría ser el pseudocódigo? ¿Qué debo hacer cuando el intérprete llega al principio de un bucle ([) o un final de bucle (])?

Comprobar si el ciclo debe continuar o detenerse no es el problema (current cell==0), pero:

¿Cuándo y dónde debo verificar?¿Cómo saber dónde se encuentra el inicio del ciclo?¿Cómo manejar bucles anidados?

Como los bucles se pueden anidar, supongo que no puedo usar una variable que contenga la posición inicial del bucle actual.

He visto intérpretes BF muy pequeños implementados en varios idiomas, me pregunto cómo lograron que funcionen los bucles, pero no puedo entenderlo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta