Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Automatische Erzeugung von vim syntax files
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
pablo_supertux
Advocate
Advocate


Joined: 25 Jan 2004
Posts: 2931
Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)

PostPosted: Sat Apr 12, 2008 3:14 pm    Post subject: Automatische Erzeugung von vim syntax files Reply with quote

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
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Sat Apr 12, 2008 11:06 pm    Post subject: Reply with quote

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
View user's profile Send private message
pablo_supertux
Advocate
Advocate


Joined: 25 Jan 2004
Posts: 2931
Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)

PostPosted: Tue Apr 15, 2008 1:10 pm    Post subject: Reply with quote

*bump* :cry: hat keiner von euch denn nie sowas gemacht??? :cry:
_________________
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
Back to top
View user's profile Send private message
Finswimmer
Bodhisattva
Bodhisattva


Joined: 02 Sep 2004
Posts: 5467
Location: Langen (Hessen), Germany

PostPosted: Tue Apr 15, 2008 1:29 pm    Post subject: Reply with quote

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
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Tue Apr 15, 2008 2:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
pablo_supertux
Advocate
Advocate


Joined: 25 Jan 2004
Posts: 2931
Location: Somewhere between reality and Middle-Earth and in Freiburg (Germany)

PostPosted: Tue Apr 15, 2008 9:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
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