Aufbau einer Quelltextbeschreibung ********************************** Der wichtigste Teil von FlexCat ist die Quelltexterzeugung. Bis hierher bietet FlexCat nichts, was nicht auch CatComp, KitCat und Konsorten bieten würden. Der erzeugte Quelltext soll nun die Verwendung der erzeugten Kataloge möglichst einfach machen. Andererseits soll dies aber unter beliebigen Programmiersprachen und für beliebige Anforderungen gelten. Um diese scheinbaren Widersprüche aufzulösen, kennt FlexCat die Quelltextbeschreibungen. Das sind Dateien, die gewissermaßen die Vorlage für den zu erzeugenden Quelltext bilden. Wie die Katalogbeschreibungen und -übersetzungen sind sie mit einem Editor erzeug- und bearbeitbar: Das ist es, was FlexCat so flexibel macht. FlexCat durchsucht die Quelltextbeschreibung nach gewissen Symbolen, die durch die in der Katalogbeschreibung gegebenen Werte ersetzt werden. Mögliche Symbole sind zum einen die mit einem Backslash eingeleiteten Steuerzeichen, die auch in den Strings der Katalogbeschreibung und der Katalogübersetzung erlaubt sind, zum anderen aber Steuerzeichen, die mit einem %-Zeichen beginnen: Für C-Programmierer ein wohlvertrautes Konzept. Mögliche Steuerzeichen sind: ist der Basisname der Quelltextbeschreibungsdatei. (Für FlexCat.cd als CDFILE wäre also FlexCat der Basisname. Wie schon erwähnt, kommt es deshalb beim Argument CDFILE sehr wohl auf Groß-/Kleinschreibung an; siehe Programmstart) ist die Versionsnummer aus der Katalogbeschreibung, nicht zu verwechseln mit dem Versionsstring aus der Katalogübersetzung. ist die Sprache der Katalogbeschreibung. Bitte beachten Sie, daß hier ein String eingesetzt wird, dessen Aussehen mit dem Kommando ##stringtype beeinflußt wird. ist die Anzahl der Strings in der Katalogbeschreibung. ist das Prozentzeichen selbst. Das wesentlichste sind aber die folgenden Steuerzeichen. Sie repräsentieren auf unterschiedliche Art und Weise die Strings der Katalogbeschreibung. Zeilen die eines dieser Zeichen enthalten, werden von FlexCat für jeden Katalogstring wiederholt, da im Normalfall kaum alle Strings in eine Zeile passen würden. ist der Bezeichner aus der Katalogbeschreibung. ist die ID des Strings gibt an, um den wievielten String (Mit 0 beginnend) es sich handelt. ist der String selbst; dieser wird in einer von der Programmiersprache abhängigen Art und Weise dargestellt. Dies kann mit den Kommandos ##stringtype und ##shortstrings beeinflußt werden. gibt an, daß der zwischen den Klammern stehende Text bei allen Strings außer dem letzten auftauchen soll. Dies ist z.B. bei Arrays nützlich, wenn unterschiedliche Arrayeinträge durch ein Komma getrennt werden sollen, nach dem letzten aber kein Komma mehr kommen soll: Dann würde man nach dem Stringeintrag eben %(,) schreiben. Beachten Sie, daß der Text zwischen den Klammern nicht weiter auf %-Symbole untersucht wird. Backslash-Sequenzen sind allerdings weiter erlaubt. Die Steuerzeichen %l und %s erzeugen Strings. Die Darstellung von Strings hängt natürlich von der Programmiersprache ab, für die Quelltext erzeugt werden soll. Deshalb können in die Quelltextbeschreibung ähnlich wie in der Katalogübersetzung Kommandos eingebaut werden. Diese müssen am Zeilenanfang stehen und jeweils eine eigene Zeile einnehmen. Die möglichen Kommandos sind: gibt an, daß lange Strings über mehrere Zeilen verteilt werden dürfen. Dies ist nicht in allen Programmiersprachen ohne weiteres möglich und vor allem besonders stark von der verwendeten Programmiersprache abhängig. Deshalb werden vorgabemäßig notfalls eben sehr lange Zeilen erzeugt. gibt die Syntax der Strings an. Mögliche Arten sind: None Es werden keinerlei zusätzliche Zeichen erzeugt und lediglich die Zeichen des Strings ausgegeben. Es ist keine Ausgabe von Binärzeichen (das sind die mit dem Backslash erzeugten Zeichen) möglich. C erzeugt Strings gemäß den Regeln der Programmiersprache C, d.h. die Strings werden links und rechts mit je einem Anführungszeichen abgegrenzt. Falls Strings über mehrere Zeilen verteilt werden, so werden die Zeilen bis auf die letzte mit einem Backslash beendet. (Der Backslash ist innerhalb von Makros nötig.) Steuerzeichen werden mit \OOO ausgegeben. Siehe C. Oberon wie der Stringtyp bei C, allerdings wird kein Backslash bei Zeilentrennung erzeugt. Siehe Oberon. Assembler Strings werden mit dc.b erzeugt und links und rechts mit einem einfachen Anführungsstrich abgegrenzt. Binärzeichen werden mit $XX erzeugt. Siehe Assembler. E Strings werden mit je einem ' umgeben. Mehrzeilihe Strings werden durch ein '+' konkateniert. Binärzeichen win in C. Als Beispiel betrachten wir einen Auszug aus der Quelltextbeschreibungsdatei C_h.sd, die eine Include-Datei für die Programmiersprache C erzeugt: ##stringtype C ##shortstrings #ifndef %b_CAT_H /* Sicherstellen, daß Include-Datei */ #define %b_CAT_H /* nur einmal verwendet wird. */ #ifndef EXEC_TYPES_H /* Nötige andere Include- */ #include /* Dateien einbinden. */ #endif #ifndef LIBRARIES_LOCALE_H #include #endif /* Prototypen */ extern void Open%bCatalog(struct Locale *, STRPTR); extern void Close%bCatalog(void); extern STRPTR Get%bString(LONG); /* Definitionen der Bezeichner und ihrer ID's */ #define %i %d /* Diese Zeile wird für jeden Katalog- */ /* wiederholt. */ #endif


converted with guide2html by Kochtopf for the Meeting Pearls Vol.1