Verschachtelte Klammern in regulären Ausdrücke

k-b

Software-Overclocker(in)
Verschachtelte Klammern in regulären Ausdrücke

Hi!
im groben: Es geht darum Scheme-Code zu evaluieren. Das heißt, viele verschachtelte Klammern.

Aus einem String mit Klammern brauche ich die einzelnen Bestandteile.
Ich erkläre es an einem Beispiel:
(+ 4 (+ 3 6))
Daraus muss ich die Elemente identifizieren:
+
4
(+ 3 6)

(+ 3 6) soll zu diesem Zeitpunkt noch nicht weiter zerlegt werden. Es reicht erstmal, dass als Einheit zu haben.

Der RegExp-Evaluator - RegExp-Evaluator - Ergebnis

So weit bin ich schon mal. Das Problem ist nur, dass ich als Ergebnis bekomme:
+
4
(+ 3 6

Ich kann mir das auch erklären, die letzte Klammer fehlt da Aufgrund des Ausdrucks und ungreedy das ganze schon beendet wird wenn die erste Klammer zu kommt.

Das mehrfache verschachteln ist nur ein Problem.

Nun ist das Problem, dass ich später noch mehr Ausdrücke zu evaluieren habe, die in einer Art Quellcode hintereinander folgen.
z.b.
(define a 6) (+ a (+ a 38))

Enter sind nicht ein Zeichen, dass ein Ausdrück zuende ist. Desweiteren können auch mehrere Ausdrücke in einer Zeile sein.

Leerzeichen sind immer ein Trennelement um den Ausdruck aufzusplitten, egal wieviele oder welche Zeichenkette dazwischen kommt.

Leider schaffe ich es auch nicht, solche Ausdrücke zu trennen. Er kommt einfach immer durcheinander wegen öffnenden und schließenden Klammern. Diese können ja Total unregelmäßig sein.

Eine Möglichkeit, wenn ich das obere mit Ungreedy hinbekommen habe, wäre allerdings einfach den restlichen Ausdruck weiter zu verarbeiten (Der verarbeitete Teil oben wegzuschneiden).

Deshalb ist mein eigentliches Problem im moment das verschachteln von den Klammern..
 
Zurück