Hallo,
Ich möchte ein Tool basteln, mit dem alle Symbole einer Pascal-Bibltiohekt in Header-Dateien für andere Programmiersprachen überführt werden.
Da die Codetools -- soweit ich das bisher herausgefunden habe -- sowieso den gesamten Pascal-Quelltext analysieren und zerlegen können, könnte ich doch darauf zurückgreifen.
Leider konnte ich bei den Beispielen noch nicht herausfinden, wie man einen CodeTree überhaupt verwendet oder durchsucht. Habt ihr eine Idee?
Codetools: exports-Abschnitt finden
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Codetools: exports-Abschnitt finden
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Codetools: exports-Abschnitt finden
fcl-passrc (das Grundstück von zb fpdoc) ist auch eine Möglichkeit. Ich kenne Codetools nicht wirklich intern. (oder eben ob es außer den IDE zu benutzen ist.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Codetools: exports-Abschnitt finden
Ich habe gerade eine Möglichkeit in den Beispielen gefunden:
Edit: Das Auffinden war ja noch vergleichsweise einfach. Aber wie komme ich an die einzelnen Symbole, die exportiert werden. Es scheint so, als seien sie gar nicht im CodeTree vorhanden...
Edit 2: Stimmt, aber mit CodeTool.ExtractNode(aNode, []) ; kommt man an den Inhalt (String). Dann darf ich das selber parsen. Nächster Schritt wäre dann vom Funktionsnamen zur Deklaration zu gelangen (Parameterliste, Calling-Convention, etc.).
Code: Alles auswählen
aRoot := CodeTool.Tree.RootNode;
while (aRoot <> nil) do begin
if (aRoot.Desc = ctnExportsSection) then
aNodeList.Add(aRoot);
aRoot := aRoot.Next;
end;
Es gibt einige Beispiele unter <lazarus>/components/codetools/examples/, die alle ohne IDE auskommen. Aber gut, dass es noch eine Alternative gibt, wenn ich hiermit nicht klar komme.marcov hat geschrieben:fcl-passrc (das Grundstück von zb fpdoc) ist auch eine Möglichkeit. Ich kenne Codetools nicht wirklich intern. (oder eben ob es außer den IDE zu benutzen ist.
Edit: Das Auffinden war ja noch vergleichsweise einfach. Aber wie komme ich an die einzelnen Symbole, die exportiert werden. Es scheint so, als seien sie gar nicht im CodeTree vorhanden...
Edit 2: Stimmt, aber mit CodeTool.ExtractNode(aNode, []) ; kommt man an den Inhalt (String). Dann darf ich das selber parsen. Nächster Schritt wäre dann vom Funktionsnamen zur Deklaration zu gelangen (Parameterliste, Calling-Convention, etc.).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein