![]() |
[RegEx] Wie Code parsen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich möchte einen kleinen (vorerst simplen) Code-Parser schreiben, der mit regulären Ausdrücken arbeitet. Der soll später Funktionen (Name, Parameter, Rückgabewert, ...), Typen und ähnliches auswerten können. Ich dachte mir, ich fange mal an, nur "begin" und "end" zu parsen, damit ich mal ein simples Code-Folding damit realisieren kann. Ich dachte mir, das müsste ja einfach sein, doch selbst damit habe ich Probleme. Mein regulärer Ausdruck, den ich zusammengetippt habe, ist dieser:
Code:
Das ergibt am Ende jedoch das, was im Anhang zu sehen ist und ist daher nicht richtig.
\s{1,}begin(.*?)\s{1,}end
Gibt es irgendwo ein Tutorial, das sich genau mit der Problematik, dem Auswerten von Source-Code, befasst? Wie ihr seht, helfen mir diese Standard-Tutorials nicht weiter und diese Herumprobiererei ist langsam wirklich frustrierend, denn nicht mal ein minimaler Erfolg ist in Sicht. PS: Ich habe mir auch bereits Davids ![]() Grüße, Matze |
Re: [RegEx] Wie Code parsen?
Ich glaube nicht das ein Regex das lösen kann.
Der Code kann ja beliebig viele Verschachtlungen haben. Du solltest dir sowas wie ein Stackbasierten Parsen bauen. Bei jedes Begin auf dem Stack schmeissen, bei jedem End vom Stack popen. So hast du immer die Schachteltiefe. |
Re: [RegEx] Wie Code parsen?
Hi Bernd,
ohje, das wurde mir auch bereits empfohlen, doch davon habe ich noch weniger Ahnung. Das müsste ich vermutlich auch mit regulären Ausdrücken verbinden, um an Dinge wie Parameter von Funktionen zu kommen. Gibt's da etwas fertiges, das man anpassen kann? Grüße |
Re: [RegEx] Wie Code parsen?
Hi Matze,
ich habe das mit dem Rekursions-Parameter (?R) Parameter von PCRE gelöst. Kannst Dir ja nochmal meinen Ausdruck damit ("ClassBodyRegEx") oder sonst das Beispiel auf der PCRE-Seite ("Suchmuster-Syntax") auf PHP.net anschauen. mfG mirage228 |
Re: [RegEx] Wie Code parsen?
Hallo David,
da ich das mit .NET machen möchte, denke ich, ist PCRE nichts für mich. Ich befürchte, um einen eigenen Parser komme ich wirklich nicht herum. :? Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz