我想在我刚创建的编程语言中构建一个Brainfuck(该死的名字)解释器来证明它是图灵完备性的。在解释器中实现Brainfuck循环
到目前为止,一切都很清楚(<>+-,.
) - 除了一件事情:循环([]
)。 我假设你从这里知道(非常难)BF语法:
- 如何实现BF在我的翻译循环?
伪代码是怎么样的?当解释器达到循环开始([
)或循环结束(]
)时,我该怎么办?
检查循环是否应该继续或停止是没有问题的(current cell==0
),但:
- 何时何地我都检查?
- 如何知道循环开始的位置?
- 如何处理嵌套循环?
因为循环可以嵌套,我想我不能只使用包含当前循环开始位置的变量。
我见过用各种语言实现的非常小的BF解释器,我想知道他们是如何设法让循环工作,但无法弄清楚。
Duplicate:http://stackoverflow.com/questions/1055758/creating-a-brainfk-parser-whats-the-best-method-of-parsing-loop-operators – 2010-06-14 21:21:17