Я хочу построить интерпретатор Brainfuck (Проклятое имя) в моем только что созданном языке программирования, чтобы доказать, что он завораживает-полноту.Внедрение контуров Brainfuck в интерпретаторе
Теперь все ясно (<>+-,.
) - за исключением одного: петли ([]
). Я предполагаю, что вы знаете (очень жесткий) синтаксис BF здесь на:
- Как реализовать БФ петлю в моем переводчике?
Как может выглядеть псевдокод? Что делать, если интерпретатор достигает начала цикла ([
) или контура цикла (]
)?
Проверяется цикл должен продолжать или прекратить это не проблема (current cell==0
), но:
- Когда и где я должен проверить?
- Как узнать, где находится начало цикла?
- Как обращаться с вложенными циклами?
Поскольку петли могут быть вложенными, я полагаю, что я не могу просто использовать переменную, содержащую начальную позицию текущего цикла.
Я видел очень маленькие интерпретаторы BF, реализованные на разных языках, интересно, как им удалось заставить петли работать, но не может понять это.
Duplicate: http://stackoverflow.com/questions/1055758/creating-a-brainfk-parser-whats-the-best-method-of-parsing-loop-operators –