ich arbeite gerade an einer Funktion, die Brainf***-Code interpretiert. Kurz für alle die BF nicht kennen: In BF sind nur einige wenige Befehle vorhanden. Man muss es sich wie ein Array vorstellen, in dem man mit + den aktuellen Zellenwert inkrementiert und mit - dekrementiert. Mit > kann man zum nächsten Element springen und mit < zum vorherigen. Klammern sind [ und ]. Code innerhalb der Klammern wird solange wiederholt, bis der aktuelle Zellenwert, auf den der Zeiger am Ende des Codes innerhalb der Klammern zeigt, 0 ist. Weitere Informationen im Wikipedia-Artikel.
Ich habe bereits alles bis auf die Klammern eingebaut.
Mein Problem ist nun, dass ich nicht weiß wie ich herausfinde welche schließende Klammer (]) zu welcher öffnenden Klammer ([) passt. Wenn die Klammern folgendermaßen angeordnet sind, dann ist es ja kein so schweres Unterfangen. Die erste passt zur letzten und die zweite zur vorletzten. Und so weiter:
+++++[>+++++[>+++++<-]<-]
Die Klammern können aber auch anders aussehen:
+++[>+<-]>[>+<-]
Hier passt ist die öffnende immer vor der schließenden. Das ist mir auch noch möglich. Aber wenn jetzt beide Fälle aufeinmal auftreten, dann habe ich ein Problem.
+++>++<[>[>+>+<<-]>>[<<+>>-]<<<-]
Ich hoffe da kann mir jemand helfen. Wie finde ich Klammerpaare?
Viele Grüße,
PelzigesWaldtier