Quiero construir un intérprete Brainfuck (Maldito nombre) en mi lenguaje de programación recién creado para demostrar que es completo.Implementando bucles Brainfuck en un intérprete
Ahora, todo está claro hasta el momento (<>+-,.
) - excepto una cosa: Los bucles ([]
). supongo que ya sabe la sintaxis BF (muy duro) de aquí en adelante:
- ¿Cómo implementar los bucles de BF en mi intérprete?
¿Cómo podría ser el pseudocódigo? ¿Qué debo hacer cuando el intérprete llega a un principio de ciclo ([
) o un final de ciclo (]
)?
Comprobación de si el bucle debe continuar o parada no es el problema (current cell==0
), pero:
- ¿Cuándo y dónde tengo que comprobar?
- ¿Cómo saber dónde se encuentra el principio del bucle?
- ¿Cómo manejar los bucles anidados?
Como se pueden anidar bucles Supongo que no puedo usar una variable que contenga la posición inicial del bucle de corriente.
He visto muy pequeños intérpretes de BF implementados en varios idiomas, me pregunto cómo lograron hacer que los bucles funcionen, pero no pueden resolverlo.
duplicado: http://stackoverflow.com/questions/1055758/creating-a-brainfk-parser-whats-the-best-method-of-parsing-loop-operators –