View previous topic :: View next topic |
Author |
Message |
pablo_supertux Advocate
Joined: 25 Jan 2004 Posts: 2931 Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)
|
Posted: Sat Apr 12, 2008 3:14 pm Post subject: Automatische Erzeugung von vim syntax files |
|
|
Hi
Ich möchte zu einer Bibliothek (mit sehr vielen Funktionen, Macros, Enums, typedefs, struct, unions, usw) ein Skript schreiben, mit dem ich ein vim syntax file automatisch erzeugen kann. Von Hand so einer Datei zu pflegen kommt nicht in Frage, weil sie erstens zu groß ist und zweitens bin ich nicht der einzige Entwickler der Bibliothek und kann nicht ständig im Code der anderen reinschauen, um daraus die Keywords für die vim synatx aufzuschreiben. Also möchte ich eine automatisiert Lösung.
Ich hab bereits ein Skript geschrieben, welches das meiste abdeckt. Die Funktionen kann ich mit objdump -d, grep und sed von den Object Files bekommen. Makros und Enum Werte habe ich auch hingekriegt.
Was aber sich als schwierig entpuppt, ist die automatische Erkennung von typedefs, structs und unions. Bei struct könnte ich wieder regexp verwenden, da wir eine sehr genaue Konvention haben und die struct Namen aus den Funktionnamen herauslesen kann, aber ein regexp zu schreiben, mit dem ich folgende abedecken kann, ist schwer:
Code: |
/* Im Code gibt es */
typedef struct bzw. union {mölicher Name} {
...
} typedefname;
/* oder */
typedef struct wasaichimmer typedefname;
/* oder */
typedef type (*func_pointer_name)(args);
/* oder */
struct stuctname {
...
};
/* oder */
struct structname;
...
struct stuctname {
...
};
/* und dasselbe mit unions */
|
also im Prinzip alle mögliche Varianten davon. Wie kann ich dann den am besten diese Namen herausfinden? Ich habe nämlich keine Lust einen kleinen Header-File Parser nur dafür zu schreiben. Oder bleibt mir keine andere Wahl übrig?
Danke für die Hilfe _________________ A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth! |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Sat Apr 12, 2008 11:06 pm Post subject: |
|
|
Hmm ... es gibt ja für viele Sachen (zB GLib) extra vim-files, die scheinbar alles beinhalten. Kannst ja mal schauen ob/wie die erzeugt werden. Ich glaub nämlich nicht, dass die glib-syntax von Hand gepflegt wird _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
pablo_supertux Advocate
Joined: 25 Jan 2004 Posts: 2931 Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)
|
Posted: Tue Apr 15, 2008 1:10 pm Post subject: |
|
|
*bump* hat keiner von euch denn nie sowas gemacht??? _________________ A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth! |
|
Back to top |
|
|
Finswimmer Bodhisattva
Joined: 02 Sep 2004 Posts: 5467 Location: Langen (Hessen), Germany
|
Posted: Tue Apr 15, 2008 1:29 pm Post subject: |
|
|
Ich glaube, da bleibt dir nichts anderes übrig als Regex. Sollte doch mit C&P relativ schnell gemacht sein?
Tobi _________________ Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke |
|
Back to top |
|
|
Necoro Veteran
Joined: 18 Dec 2005 Posts: 1912 Location: Germany
|
Posted: Tue Apr 15, 2008 2:08 pm Post subject: |
|
|
Also ... ich hab mal ein wenig geschaut. Die glib-teile sind automatisch generiert. Das Skript hab ich im Original nimmer gefunden - nur hier: http://prdownloads.sourceforge.net/gwyddion/gwyddion-2.9.tar.bz2?download (utils/vim-syn-gen.py) ...
Das Skript benutzt aber Gtk-Doc... wenn die Library kein gtk-doc benutzt wird es schwer
Aber das ist sowieso ein sinnvoller ansatz, das über Dokumentation zu machen...
-> entweder tags für die dokus einführen, die man denn per script auslesen kann
-> oder ein dokumentationssystem (wie zB gtk-doc, doxygen) finden, dass auch in XML o.ä. ausgibt - und dieses denn auswerten
/edit: Ach btw ... viele vim-syntax files, die ich gefunden hab, sind per Hand gepflegt _________________ Inter Deum Et Diabolum Semper Musica Est. |
|
Back to top |
|
|
pablo_supertux Advocate
Joined: 25 Jan 2004 Posts: 2931 Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)
|
Posted: Tue Apr 15, 2008 9:47 pm Post subject: |
|
|
Das vim-syn-gen.py hatte ich schon mal gefunden, aber gar nicht so richtig angeschaut, weil ich bemerkt habe, dass man eben gtk-doc braucht und das setzen wir nicht ein.
Quote: |
Aber das ist sowieso ein sinnvoller ansatz, das über Dokumentation zu machen...
-> entweder tags für die dokus einführen, die man denn per script auslesen kann
-> oder ein dokumentationssystem (wie zB gtk-doc, doxygen) finden, dass auch in XML o.ä. ausgibt - und dieses denn auswerten
|
Das ist tatsächlich eine gute Idee, daran habe ich nicht gedacht. Eine Doxygen Doku haben wir sowieso, das würde schon sehr bei den structs und typedefs helfen. Alles andere habe ich bereits mit grep hingekriegt.
Quote: |
/edit: Ach btw ... viele vim-syntax files, die ich gefunden hab, sind per Hand gepflegt
|
Das ist genau, was ich verhidern will, keine Lust eine 50KB große Datei per Hand zu pflegen. Jedenfalls danke für die Idee mit Doxgen _________________ A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|