Praktikum
Sprachimplementierung mit Werkzeugen WS 1996/97
Projekt TeX-Pascal
Auror: Thomas Franke
TeX-Pascal ist eine Sprache, mit der sich Text-Dokumente auf einfache
Art und Weise erstellen lassen sollen. Wie der Name schon andeutet, setzt
sie an LaTeX an, und behält damit dessen sämtliche Möglichkeiten
bei. Die Idee, die zu TeX-Pascal fuehrte war, den Quelltext zu strukturieren,
indem die leicht verständliche und uebersichtliche Pascal-Notation
verwendet wird.
Der eigentliche Text, der dann auch im Zieldokument zu sehen ist, wird
in geschweifte Klammern gesetzt. Fuer die lexikalische Eingabe ist daher
die Verwendung eines Scanners notwendig, der auch den als Pascal-Kommentar
aufzufassenden, in geschweiften Klammern stehenden beliebigen Text beachtet,
so daß dieser in den Zieltext uebernommen werden kann. Fuer den Text
lassen sich bestimmte, vordefinierte Eigenschaften festlegen wie Schrift,
Größe, etc. Diese gelten dann jeweils fuer den Block, vor dem
sie festgelegt worden sind. Die Text-Eigenschaften können also als
Bezeichner aufgefasst werden, und mit den Scope Rules des Umgebungsmoduls
behandelt werden. Ebenso besitzt jede dieser Eigenschaften einen vordefinierten
Typ, so daß bei der Typanalyse nur ueberprueft werden muß,
ob der Wert der zugewiesene Eigenschaft damit verträglich ist, d.h.
ob z.B. '12' ein gueltiger Wert fuer die Eigenschaft 'Groesse' ist. Die
Zieltext-Zusammensetzung beinhaltet keine Schwierigkeiten, wichtig ist
nur, daß jeweils bei Betreten und bei Verlassen eines Blocks, die
nach den Scope Rules gueltigen Werte für die Text-Eigenschaften neu
gesetzt werden.
Beispiel
DOKUMENT {Tiere in Afrika};
AUTOR {Thomas Franke};
DATUM {16.12.96};
IMPORT Vorwort.txp;
MAKRO Stechmuecke BEGIN
Schrift: MueckMack;
Groesse: 10;
Farbe: Mueckenblau;
Einrueckung: 4;
END;
KAPITEL {Einige technische Besonderheiten von TeX-Pascal};
TEXT Schrift:SansSerif;
BEGIN
{LaTeX-Kommandos lassen sich einfach in den Text einfuegen, z.B. \TeX oder \LaTeX.
}
TEXT Schrift:Futura;
BEGIN
{Bloecke lassen sich einfach schachteln.}
TEXT Stechmuecke;
{Nur dieser Text erscheint im Stechmuecken-Stil.} {Dieser wieder in Futura.}
END
END;