I want to build a Brainf*ck (Damn that name) interpreter in my freshly created programming language to prove it's turing-completeness.
Now, everything is clear so far (<>+-,.) - except one thing: The loops ([]). I assume that you know the (extremely hard) BF syntax from here on:
- How do I implement the BF loops in my interpreter?
How could the pseudocode look like? What should I do when the interpreter reaches a loop beginning ([) or a loop end (])?
Checking if the loop should continue or stop is not the problem (current cell==0), but:
- When and where do I have to check?
- How to know where the loop beginning is located?
- How to handle nested loops?
As loops can be nested I suppose that I can't just use a variable containing the starting position of the current loop.
I've seen very small BF interpreters implemented in various languages, I wonder how they managed to get the loops working but can't figure it out.