Codetools: exports-Abschnitt finden

Rund um die LCL und andere Komponenten
Antworten
Socke
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

Beitrag von Socke »

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?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

marcov
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

Beitrag von marcov »

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.

Socke
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

Beitrag von Socke »

Ich habe gerade eine Möglichkeit in den Beispielen gefunden:

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;
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.
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.

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

Antworten