新しく作成したプログラミング言語で Brainfuck (くそったれ) インタープリターを構築して、それがチューリング完全であることを証明したいと考えています。
これで、これまでのところすべてが明らかです ( <>+-,.
) - 1 つのことを除いて: ループ ( []
)。ここからは、(非常に難しい) BF 構文を知っていると仮定します。
- インタープリターで BF ループを実装するにはどうすればよいですか?
擬似コードはどのように見えるでしょうか? [
インタープリターがループ開始 ( ) またはループ終了 ( )に到達した場合、どうすればよい]
ですか?
ループを続行するか停止するかを確認することは問題ではありませんが ( current cell==0
)、次のようになります。
- いつ、どこで確認すればよいですか?
- ループの開始位置を知る方法は?
- ネストされたループを処理するには?
ループはネストできるので、現在のループの開始位置を含む変数を使用することはできないと思います。
私は、さまざまな言語で実装された非常に小さな BF インタープリターを見てきました。どうやってループを機能させたのだろうかと思いますが、それを理解することはできません。