Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 18.09.09 15:51 
HI,

ein größeres Projekt von mir neigt sich dem Ende entgegen und da ich dazu ne ordentliche Dokumentation brauch (nicht nur im Quelltext) und ich diese aber gleich aus dem Kommentaren des Quelltextes generieren lassen will, versuch ich grad n Delphi Parser zu schreiben, der mir den interface-Teil analysiert. Ich weiß das es schon so'n Tool gibt (PasDoc), aber ich finde, dass die Kommentare die man da setzten muss an komischen stellen stehen müssen und deshalb hätt ich lieber meine Methode.
Meine gurndlegende Idee dazu:
-jeden buchstaben im Quelltext durchgehen
-Befehle bzw. Delphi-Syntax erkennen und auf dem Befehlsstack ablegen
-jeweils den obersten Befehl im Stack mit den folgenden Variablen und zeichen bearbeiten

aber irgendwie fehlt mir immer noch eine wichtige Sache hab ich so das Gefühl, weil so richtg will es nicht voran gehen. Hat schonma jemand n komplexeren Parser geschrieben und kann mir evtl. sagen ob mein Weg richtig is, oder ob das im Chaos endet?

MfG & Thx Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 18.09.09 15:56 
Naja, Parser schreibt man oft nicht von Hand sondern verwendet Tools (sog. Compiler Compiler). Ob's da was für Delphi gibt weiss ich nicht. Ich denke einen ObjectPascal Parser müsste es eigentlich OpenSource schon geben, hast du schon danach gesucht?

Ansonsten such mal nach der EBNF von Delphi. Für Pascal sieht sie so aus:
www.lrz-muenchen.de/...ard/Pascal-EBNF.html

Die Grammatik für Delphi 2010 dürfte einiges komplexer aussehen.

Oft wird nebst Parser auch ein Tokenizer verwendet, um den Quelltext erst mal grob auseinanderzunehmen, bspw. Zahlen, Ausdrücke usw.. Der Parser muss dann nicht mehr Zeichen für Zeichen durchgehen sondern "nur" noch die Tokens. Es gibt einiges an Literatur, was Parser-Typen angeht. Es gibt z.B. Top-Down, Bottom-Up Parser, mit/ohne Lookahead.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 18.09.09 17:07 
DWS (Delphi Web Script) (gibts bei Sourceforge) ist ein in Delphi geschriebener Quasi-Delphi-Interpreter, bei dem man sich bezüglich des Parsers bedienen könnte.

Wenn man einen Quellcodeformatter finden würde (Jedi Code formatter?), müsste der auch etwas parserähnliches implementieren.

_________________
Na denn, dann. Bis dann, denn.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 19.09.09 02:56 
Ich benutze dafür den Castalia Parser. Der ist Open Source unter der MPL.
code.google.com/p/castaliadelphiparser/
Download: castaliadelphiparser...ecode.com/svn/trunk/

Ich habe da ein größeres Projekt liegen (und komme leider nicht dazu dran zu arbeiten), das damit arbeitet und von kleineren Korrekturen abgesehen ließ sich damit alles parsen und sehr gut aufbereiten.