Also ja, ich mache Brainfuck Interpreter, aber ich muss auch AST von seinem Code erstellen. Primitive Operationen (+ -.,> <) können ziemlich einfach in einem Knoten verwendet werden. Die Schleifenoperationen sehen dagegen ziemlich komplex aus. Also, was ich brauche, ist, Verbindungen zwischen [und] Knoten zu machen. Dafür benutze ich ein spezielles Node-Feld in] node.C#: Brainfuck Klammern Finder
Und jetzt denke ich, dass ich Verknüpfungen zwischen ihnen erstellen kann, indem Sie Klammern Positionen in einer Zeichenfolge verwenden. Aber hier ist ein Problem - wie kann ich passende Paare von Klammern erstellen?
Hier ist die Probe meines Code:
private readonly List<int> rightBracketsIds;
private readonly List<int> leftBracketsIds;
private List<Tuple<int, int>> lsTuples;
I Positionen von Klammern erhalten, indem spezielle Methode verwenden und sie in einer entsprechenden Liste platzieren. Aber was sollte ich für die Erstellung von Paaren verwenden? Wie
++[>+[>++<-]<-]++[>++<-]>.
LBs: 2, 5, 17
RBs: 11, 14, 23
Also muss ich Tupeln < 2,14> < 5, 11> < 17, erhalten 23>.
Nun, ich kann irgendwie sehen, dass die rechte Klammer Position haben muss, die größer ist als die linke Klammer: mit Blick auf LB 17 und RB 14 können wir sagen, dass sie nicht miteinander verbunden sind. Aber ich denke, es gibt einen Weg, es besser zu machen.
Also ja, alle Antworten werden hilfreich sein. Entschuldigung für mein schlechtes Englisch.
P.S. Ich habe über einen Stack nachgedacht, aber ich weiß nicht, wie ich ihn in meinem Problem verwenden soll. P.P.S. Ich habe endlich etwas Nützliches gefunden: How to find the matching pair of braces in a string?
Wenn ich mein Problem lösen werde, werde ich die Lösung hier posten.