AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[RegEx] Wie Code parsen?

Ein Thema von Matze · begonnen am 23. Nov 2007 · letzter Beitrag vom 23. Nov 2007
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[RegEx] Wie Code parsen?

  Alt 23. Nov 2007, 10:00
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:
\s{1,}begin(.*?)\s{1,}end
Das ergibt am Ende jedoch das, was im Anhang zu sehen ist und ist daher nicht richtig.

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 PHP Inspection Unit angesehen, doch da verstehe ich nur Bahnhof.

Grüße, Matze
Miniaturansicht angehängter Grafiken
code_folding_104.png  
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: [RegEx] Wie Code parsen?

  Alt 23. Nov 2007, 10:10
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [RegEx] Wie Code parsen?

  Alt 23. Nov 2007, 10:13
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
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: [RegEx] Wie Code parsen?

  Alt 23. Nov 2007, 14:59
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [RegEx] Wie Code parsen?

  Alt 23. Nov 2007, 15:07
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz