Voglio creare un interprete di Brainfuck (Dannazione di quel nome) nel mio linguaggio di programmazione appena creato per dimostrare che è completo.Implementazione di loop di Brainfuck in un interprete
Ora, tutto è chiaro finora (<>+-,.
) - tranne una cosa: I cicli ([]
). Presumo che si conosce il (estremamente difficile) la sintassi BF da qui in poi:
- Come faccio a implementare il BF loop nel mio interprete?
Come potrebbe apparire lo pseudocodice? Cosa devo fare quando l'interprete raggiunge l'inizio di un loop ([
) o un loop end (]
)?
Verificando il ciclo deve continuare o stop non è il problema (current cell==0
), ma:
- Quando e dove devo controllare?
- Come sapere dove si trova l'inizio del ciclo?
- Come gestire i cicli annidati?
Come loop possono essere nidificati Suppongo che non sia possibile utilizzare solo una variabile contenente la posizione iniziale del loop corrente.
Ho visto interpreti BF molto piccoli implementati in varie lingue, mi chiedo come siano riusciti a far funzionare gli anelli ma non riescono a capirlo.
Duplicato: http://stackoverflow.com/questions/1055758/creating-a-brainfk-parser-whats-the-best-method-of-parsing-loop-operators –