我想用我新创建的编程语言构建一个 Brainfuck(该死的名字)解释器,以证明它是图灵完备的。
现在,到目前为止一切都清楚了(<>+-,.
)——除了一件事:循环([]
)。我假设您从这里开始了解(非常困难的)BF 语法:
- 如何在我的解释器中实现 BF 循环?
伪代码是什么样子的?[
当解释器到达循环开始( )或循环结束( )时,我该怎么办]
?
检查循环是否应该继续或停止不是问题(current cell==0
),而是:
- 我必须在何时何地进行检查?
- 如何知道循环开始的位置?
- 如何处理嵌套循环?
由于循环可以嵌套,我想我不能只使用包含当前循环起始位置的变量。
我见过用各种语言实现的非常小的 BF 解释器,我想知道他们是如何设法使循环工作但无法弄清楚的。