Codeknacker: Cross - Referenz -Generator

# Benutzte Variablen:
1: C-Sprache 
6 18 105 106 106 212 213 
2: FILE
2 39 45
...
40: zeiger
3 282 284 295 
41: zeile
 6 40 100 137 164 177 195
41 Variablen wurden benutzt: 

Benutzte Funktionen:
1: CLS ()
1 49

2: analyse ()
3 37 85 122
...
20: strcmp ()
3 212 249 252
 21: strcpy ()
 1 236
21 Funktionen wurden benutzt

Cross-Referenzen erleichtern das Programmieren erheblich. Professionelle Programmierer gestalten über Cross-Referenzen ihre Programm effektiver, und Entwickler komplexer Software würden ohne sie sogar den Überblick verlieren.

Eine Cross-Referenz zeigt Ihnen in tabellarischer Form an, wo Sie im Quelltext welche Variable und Funktion verwendet haben. Das Programm listet den Variablen - bzw. Funktionsnamen auf und unmittelbar darauf sämtliche Zeilennummern, in denen dieser Ausdruck im Quelltext vorkommt.

Der in diesem Artikel vorgestellte Cross-Referenz-Generator ist speziell für die Sprache C entwickelt. Da er ausschließlich Standard-C-Funktionen verwendet, läuft er mit jedem C-Compiler auf dem ST (z.B. Turbo-C oder Laser-C) und auch auf anderen Computern.

Der Generator arbeitet in zwei Stufen: Die erste Stufe filtert aus dem Quelltext die Variablen- und Funktionsnamen heraus, die zweite fügt neue Ausdrücke ein und verwaltet sie. Ein Problem stellt sich bereits in der ersten Stufe: Wie filtert man die relevanten Wörter aus dem Quelltext? Dazu geht das Programm Xref bei der Quelltextanalyse wortweise vor. Ist das gefundene Wort kein Element der Sprache C, prüft Xref, ob anschließend eine Klammer folgt. In diesem Fall handelt es sich um eine Funktion, anderenfalls um eine Variable.

Die wortweise Suche arbeitet intelligent. Xref überliest Kommentare, Vorcompilerbefehle, Zahlen, Sätze in Anführungszeichen und Zeichen zwischen Apostrophen. Kommentare beginnen mit der Zeichenfolge »/« und enden mit »/«. Apostrophen umfassen ein einzelnes Zeichen. Auf das Zeichen »\« folgt allerdings ein weiteres Zeichen.

Hat Xref einen Funktions- bzw. Variablenname entdeckt, so ordnet es das Wort mit Hilfe einer rekursiven Funktion in eine dynamisch angelegte Baumstruktur ein. Die Funktion geht dabei folgendermaßen vor: Ist das Wort noch nicht vorgekommen, so richtet sie einen neuen Eintrag ein. Dabei hält die rekursive Funktion den gefundenen Funktions- bzw. Variablennamen und die Fundstelle fest. Ist das Wort bereits eingetragen, so erhöht sich lediglich ein Zähler und die neue Fundstelle wird hinzugefügt.

Sind der Quelltext analysiert und alle Wörter registriert, gibt Xref die Cross-Referenz aus. Dazu listet es alle Einträge der Reihe nach auf: den Funktions- bzw. Variablenname und die Fundstellen. Damit besitzen Sie alle notwendigen Angaben, um Ihr C-Programm zu analysieren. (ba)


Frederic Mutter
Aus: TOS 05 / 1990, Seite 92

Links

Copyright-Bestimmungen: siehe Über diese Seite