Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03658.jsonl.gz/2494

Parseroptimierung für Hilfdirselbst (preg_match)
Hallo lieber oesi!
Zu deinem Kommentar folgendes..
Es handelt sich um einen "echten" Parser, welcher auch über ganz
normale Syntaxdiagramme verfügt ... Der Code ist recht umfangreich
und um einiges mächtiger als man auf den ersten Blick denken würde.
Bei dem von mit geposteten Quellcode handelt es sich um eine
Rekursive Zerlegung des Inhaltes. Die Basisanalyse wird dabei sauber
"von Hand" geparst, wurde schon tausendmal verwendet, getestet,
optimiert, und das Ding zeigt sich sehr schnell!
Ich bin dabei der Meinung, dass Reguläre Ausdrücke für die
Detailanalyse (in diesem Fall Optionen) sehr sauber sind, denn
mit Hochsprachen wie PHP kann man nicht einen effektiven Parser
bauen, welcher auch die Geschwindigkeitsanforderungen erfüllt.
Mein Vergleich (Implementation diverser Teile in meinem Parser)
zeigt mir, dass bei korrekter Anwendung von preg eine extreme
Geschwindigkeitssteigerung erreicht werden kann.
Reguläre ausdrücke unterstützen auch Notationen die Zustände
im Parsing implizieren, wobei man also dasselbe erreichen kann.
Mit einiger Übung lesen sich Reguläre Ausdrücke auch ganz gut
und die Fehleranfälligkeit ist damit reduzierbar.
Das Effektive Problem hast Du dabei leider überlesen. Du machst
nämlich im ersten Schritt einfach eine Option:
option3="der "kleine" Text"
Dass diese Trennung rekursiv nicht ein-eindeutig ist hast du leider
übersehen..
Das Syntaxdiagramm für dieses Escapen von In-quote-quotes
(wie oben notiert) in beiden Varianten ist mir bekannt.
Ich bin einfach in der notation dieser Spezialitäten in regulären
Ausdrücken noch nicht ganz so gewandt.
(Dieses Quoting sollte sich mittels "lookahead"- und "lookbehind"-assertions korrekt behandeln lassen!!!)
Die alternative Implementation (parsing mir stringfunktionen in PHP)
wollte ich auf dieser Ebene nicht einsetzen und würde ich auch erst
als letzte Lösung nehmen. (Wenn alle anderen Probleme gelöst sind)
sorry, wenn ich mich zu "unüberlegt" ausgedrückt habe...
:) so jetzt muss ich aber weg ....
GrEeZ: Miro Dietiker
als Antwort auf: [#52064]