gesy2ltx -A converter for G.E.S.yII (© Michael Denzlein) files to LaTeX files using style StrukTeX and substyle strukto.
gesy2ltx.pl [options]
Dieses Programm konvertiert Struktogrammdateien die mit G.E.S.yII (© Michael Denzlein) erstellt worden sind in LaTeX-Dateien. Es werden dazu Struktogramm-Umgebungen erstellt für den Style StrukTeX (© Jobst Hoffmann).
Werden beim Aufruf keine Optionen angegeben so durchsucht das Programm das aktuelle Verzeichnis nach .smd und .wmd Dateien ab und erzeugt entsprechende .ltx Dateien. Diese LaTeX-Dateien können anschließend mit \input
in ein Hauptdokument eingebunden werden, dieses Hauptdokument kann mit der Option -m
durch gesy2ltx.pl erzeugt werden.
Soll nur eine einzige Datei konvertiert werden, so ist die Optionen -i
für die Eingabedatei zu verwenden.
Verzeichnis zum Durchsuchen nach .smd und .wmd Dateien (Standard: Aktuelles Verzeichnis).
Benutze die Textdatei load_list.txt in dem Verzeichnis von -d
.
Name der Eingabedatei (Schaltet die Option -d
ab).
Name der Ausgabedatei (Schaltet die Option -d
ab).
Name des Hauptdokuments für LaTeX.
Um jedes Struktogramm wird eine Floating-Umgebung gebildet. Die Standardumgebung ist strukto
und erstellt eine Liste der Struktogramme.
Text der vor der normalen Beschriftung der Floating-Umgebung stehen soll. Bei der Umgebung strukto
werden die Umgebungen mit Struktogramm
n benannt.
Schalte um auf WinGESy-Format. Dieser Schalter muss bei Einzeldateien und der Ladeliste angewendet werden. Bei einem Verzeichnisscan wird automatisch gewechselt.
Schalte die Ausgabe von \sProofOn
und \sProofOff
ein.
Sortiere die Eingabedateien vor der Verarbeitung.
Keine Kommentare während der Verarbeitung.
Sehr viele Kommentare aufSTDERR während der Verarbeitung.
Kurze Hilfe.
Betriebssyteme: Egal, Hauptsache ein Perl-Interpreter Programme:perl, TeX, G.E.S.y II oder WinGESy sowie die Styles StrukTeX, Here
Die beiliegende Styledatei strukto.sty sollte nach TEXINPUTS
kopiert werden. Das Hauptskript gesy2ltx.pl ist in ein beliebiges Verzeichnis innerhalb von PATH
zu kopieren.
Ist auf dem Rechner make
vorhanden, so kann mit make install
die Installation durchgeführt werden, eventuell müssen im CONFIG die Pfade angepaßt werden. Ein abschliessendes make all
erstellt die Dokumentation und mit make test
werden die Testdateien aus dem Verzeichnis smd/ nach LaTeX konvertiert.
Es dürften noch einige Sonderzeichen für TeX durchgereicht werden... Dafür sind die Routinen HiASCII2TeX (HiASCII2TeX) und HiASCII2TeXlabel (HiASCII2TeXlabel) zuständig.
In der Datei CHANGES sind die einzelnen Änderungen zu den Version zu lesen.
DokuTransData Jürgen A.Lamers Altstr. 112 D-52066 Aachen Tel.: +49-241-970504 Fax : +49-241-970506
Email: Juergen A.Lamers (jaloma@dokutransdata.de)WWW: http://www.DokuTransData.de/
GESY2LTX.PL 1.1.0b (29.06.01) Perl-Version by Jürgen A.Lamers (jaloma@dokutransdata.de)
Copyright(C) 1995/99/2001 Jürgen A.Lamers
This program is free software; you can redistribute it and/or modify it under the terms of theGNU General Public License. This program comes with absolutely no warranty.
Durch die Benutzung dieses Produktes akzeptierst du die volle Verantwortung für alle Schäden, die durch seine Benutzung oder das Unvermögen seiner Benutzung auftreten können. Die Entwickler dieser Software und der Autor und die Übersetzer dieser ``Urheberrechts-Notiz'' können nicht verantwortlich gemacht werden.
Halloele!
Da ich meine Dokumentation grundsätzlich in TeX setze, aber meine lieben Kollegen keine Ahnung davon haben (sie ärgern sich lieber mit Wysiwyg alaWP 6.1 oder Word 6.0 herum) und sowieso nur mit ``intuitiven'' Programmen umgehen können, mußte ich mir eine Schnittstelle zwischen G.E.S.yII (© Michael Denzlein) und TeX einfallen lassen.
Glücklicherweise speichert G.E.S.yII die erstellten Struktogramme als Textdatei ab, so daß mir der Umweg ``Einbinden einer Druckdatei in ein TeX-Dokument'' erspart bleibt.
In der jetzigen Version wird eine Konvertierung nach StrukTeX (Version 5.2b, 28. Mai 1998) unterstützt.
Über Anregungen bzw. Fehlermeldungen würde ich mich freuen. Wie ich erreichbar bin, kannst Du dem Abschnitt AUTHOR entnehmen.
Ein Perl-Guru wird wahrscheinlich milde über die Programmierung dieses Programmes lächeln. Ich weiß, daß ich nicht alle Features von Perl ausgenutzt habe. Nicht destotrotz ist dieses Programm besser programmiert als die vorherige Version (von daher hatte ich auch den Source nicht freigegeben...). Wer also Zeit und Lust hat, kann mir gerne die optimierte Version zu senden.
Ich verwende die Prozedurnamen um Referenzen zu den einzelnen Struktogrammen über den TeX-Befehl \ref zu erzeugen. Es dürfen somit keine Umlaute, Klammern oder ähnliches in den Prozedurnamen auftauchen, ansonsten darfst Du Dich auf kuriose Fehlermeldungen freuen.
Ich habe mir nicht die Mühe gemacht die Attribute der einzelnen Strukturelemente die G.E.S.yII angibt auszuwerten. Daher sind folgende Parameter festverankert:
Größe der Struktogramme 160x150 (mm).
Steigungen bei \ifthenelse 6 : 6.
Breite bei \while 8.
Steigungen bei \case 5 mit 3 Bedingungen.
Ich habe versucht die G.E.S.yII Dateien zu verstehen und mir anschließend die entsprechenden Syntaxdiagramme zu den einzelnen Bausteinen aufgemalt. Ich gebe diese Syntaxdiagramme an dieser Stelle in EBNF-Notation an (Ich hoffe jetzt nur, daß ich keine formalen Fehler mache...).
anweisung := ANWEISUNG anwattribute;
anwattribute := ATTRIBUTE TEXT text* TEXTENDGROESSE float ATTR_END;
while := WHILE anwattribute stmt* END;
for := FOR forattribute stmt* END;
forattribute := ATTRIBUTE TEXT text* TEXTENDGROESSE float TEXT2 text* TEXTENDGROESSE2 float ATTR_END;
repeat := REPEAT anwattribute stmt* END;
case := CASE anwattribute casestmt* END;
casestmt := BEGIN XCASE anwattribute stmt* END;
if := IF anwattribute xif ELSE xif END;
xif := XIF anwattribute stmt*;
parallel := PARALLEL anwattribute parastmt* END;
parastmt := BEGIN stmt* END;
exit := EXIT name nameattribute;
subcall := PROCEDURE name nameattribute;
nameattribute := ATTRIBUTE TEXT text* TEXTEND GROESSE float NAME text GROESSE_NAME float ATTR_END;
stmt := anweisung | while | for | repeat | case | if | parallel | exit | subcall;
procedure := PROCEDURE name procattribute BEGIN stmt* END leerzeile;
procattribute := ATTRIBUTE TEXT text TEXTEND GROESSE float GROESSE_ROOTNAME float ATTR_END
prghead := PROGRAM name prgattribute;
prgend := eof;
prgattribute := ATTRIBUTE stuff ATTR_END;
smd := (leerzeile leerzeile | prghead) procedure* prgend;
Die Module name
, leerzeile
, text
, float
, stuff
und eof
gebe ich jetzt nicht an, sie sollten selbsterklärend sein.
Ansonsten sind diese Definitionen einszueins abgebildet worden, mit der Zusatzfunktion das sofort die Ergebnissdatei erzeugt wird. Mit diesem Manko muß man/frau zum Beispiel beim CASE-Statement leben, da ich zu Beginn natürlich noch nicht wissen kann wieviele Fälle es geben wird.
Im nachfolgenden werden kurz die einzelnen Unterroutinen beschrieben.
Hauptroutine zum Parsen der G.E.S.y II-Dateien.
Parsen der Prozedur Anweisungen.
Parsen der einzelnen Anweisungen in einem beliebigen Block.
Parsen des BlocksANWEISUNG.
Parsen des BlocksEXIT.
Parsen des BlockPROCEDURE Aufrufs.
Parsen des BlocksWHILE.
Parsen des BlocksREPEAT.
Parsen des BlocksFOR.
Parsen des BlocksCASE.
Parsen des BlocksPARALLEL. Da StrukTeX diesen Block nicht unterstützt werden alle nachfolgenden Anweisungen als Kommentar ausgegeben.
Parsen des BlocksIF.
Parsen der Attribute zuCASE und der eingebundenen Anweisungen.
Parsen der Anweisungen in einem Parallel-Block.
Parsen der Attribute zuXIF und der eingebundenen Anweisungen.
Parsen der Attribute zuFOR.
Parsen der Attribute zuEXIT oderSUBCALL.
Parsen der Attribute zuANWEISUNG,WHILE,REPEAT,CASE,IF,XIF undPARALLEL.
Parsen der Attribute zuPROCEDURE.
Parsen der Attribute zuPROGRAM.
Im nachfolgenden wird der Kopf für eine komplette G.E.S.yII - Datei gebildet, sofern diese als PROGRAM abgespeichert worden ist.
Die Umgebung zu PROGRAM wird beendet.
Im nachfolgenden wird der Kopf für jedes Struktogramm aufgebaut. Insbesondere wird mit $FLOATENV
eine Floating-Umgebung gebildet.
Die Floating-Umgebung $FLOATENV
sowie die Umgebung struktogramm werden beendet. Dabei werden zusätzlich noch ein Caption- sowie Labeltext gesetzt.
Ausgabe von \sub mit Argument $subname.
Abschluß des Befehls \sub.
Ausgabe von \assign mit Argument @anwtextbuf.
Abschluß des Befehls \assign.
Ausgabe von \while mit Argument @anwtextbuf.
Abschluß von \while
Ausgabe von \forever.
Abschluß von \forever.
Ausgabe von \until mit Argument @anwtextbuf.
Abschluß von \until.
Ausgabe von \ifthenelse mit Argument @anwtextbuf.
Ausgabe von \change.
Abschluß von \ifthenelse.
Ausgabe von \case mit Argument @anwtextbuf.
Anzahl der Fälle ist 3!
Ausgabe des Case-Block mit Argument @anwtextbuf.
Ausgabe von \switch für den nächsten Fall im Case-Block.
Abschluß von \case.
Pseudo-Ausgabe des Kopfes einer PARALLEL-Anweisung.
Pseudo-Ausgabe für einen PARALLEL-Block.
Pseudo-Ausgabe des Fusses einer PARALLEL-Anweisung.
Ausgabe von \return.
Abschluß von \return.
Konvertiert Umlaute in TeX-Umlaute und quotet TeX-Befehlszeichen.
Konvertiert alle Sonderzeichen die in einem Programmnamen vorhanden sein können zu einem Doppelpunkt, deutsche Umlaute werden nach Low-ASCII umgewandelt.