next up previous
Nächste Seite: Compiler-Ausgaben im Quelltext Aufwärts: Compiler-Optionen Vorherige Seite: Wirkungs- und Veränderungs-Bereiche

Compiler-Anweisungen im Quelltext

Einige Optionen lassen sich mit Hilfe der Compiler-Anweisungen im Quelltext verändern. Die Compiler-Anweisung ist eine spezielle Form eines Kommentars. Sie wird jedoch -- im Gegensatz zu Kommentaren -- nicht überlesen, sondern vom Compiler ausgewertet. Die Syntax ist

"(*$-{Anweisung} "*)".
Zu Anfang muss also das Symbol ,,(*$`` stehen. Das $-Zeichen darf nicht durch Leerzeichen vom * abgesetzt sein, andernfalls wird der Bereich wie ein normaler Kommentar behandelt! Danach folgt eine beliebige Anzahl von Anweisungen, die durch Leerzeichen oder Zeilenvorschübe getrennt sind. Hier dürfen nur Anweisungen auftreten, insbesondere keine Kommentare! Die Compiler-Anweisung wird durch ,,*)`` beendet. Compiler-Anweisungen innerhalb von Kommentaren werden ignoriert.

Die Anweisungen zum Verändern von Optionen haben die Form

Option ":=-BoolescherAudruck.
(1) oder
"POP-Option.
(2) oder
"DEFINE-Option ":=-BoolescherAusdruck.
(3) ,,Option`` ist hierbei ein vom Compiler vordefinierter oder vom Benutzer durch die ,,DEFINE``-Anweisung definierter Name. ,,BoolescherAusdruck`` kann ,,TRUE`` oder ,,FALSE``, der Name einer Option oder auch ein aus diesen Elementen durch ,,NOT``, ,,AND``, ,,OR`` und Klammerung gebildeter Ausdruck sein. Die Schlüsselwörter (DEFINE, POP, FALSE, ...) müssen gross geschrieben werden. Die Namen der Optionen können beliebig gross oder klein geschrieben sein.

Die Zuweisung (1) setzt eine ,,Options-Variable`` auf den durch den Ausdruck bestimmten Wert und merkt sich den alten Zustand dieser Option auf einem Stapel, der bis zu 32 Werte aufnehmen kann. Wenn mehr als 32 Zuweisungen in Folge auftreten, erfolgt keine Fehlermeldung.

(*$ StackChk:=FALSE *)

Die ,,POP``-Anweisung (2) holt den Wert der Option vom zugehörigen Stapel. Wenn zuvor keine Zuweisung erfolgt ist, bekommt sie den eingestellten Vorgabewert. Dies ist auch der Fall, falls mehr als 32 ,,POP``-Anweisungen in Folge auftreten sollten. Sie kann im Zusammenwirken mit der Zuweisung dazu benutzt werden, begrenzte Bereiche mit einem bestimmten Wert einer Option zu kompilieren, ohne für die nachfolgenden Bereiche den voreingestellten Wert der Option zu verändern.


\begin{example}
\begin{verbatim}(*$ POP StackChk *)\end{verbatim}\end{example}

Die ,,DEFINE``-Anweisung (3) definiert eine neue Benutzer-Option. Der Name der Option darf kein vom Compiler vordefinierter Name sein. Auch darf kein Name mehrmals in einem Quelltext definiert werden. Gross- und Kleinschreibung spielen hierbei keine Rolle.

Benutzerdefinierte Optionen können von der Kommandozeile mit einem Vorgabewert belegt werden. Dies geschieht durch die Anweisung ,,-oName`` oder ,,+oName``. Hierdurch wird eine potentielle benutzerdefinierte Option erzeugt und mit dem Vorgabewert FALSE beziehungsweise TRUE belegt. Der Name der Option ist jedoch im Quelltext zunächst unbekannt, nur eine ,,DEFINE``-Anweisung kann ihn sichtbar machen.


\begin{example}
\begin{verbatim}(*$ DEFINE Demo:=FALSE *)\end{verbatim}\end{example}

Hier gilt es zwei Fälle zu unterscheiden:


\begin{note}
% latex2html id marker 2389
Es gibt noch weitere Anweisungen, die ...
...daf\uml {u}r wurde auch die
,,{\tt DEFINE}\lq\lq -Anweisung implementiert.
\end{note}


next up previous
Nächste Seite: Compiler-Ausgaben im Quelltext Aufwärts: Compiler-Optionen Vorherige Seite: Wirkungs- und Veränderungs-Bereiche
Claudio Nieder 2000-11-12