[Tustep-Liste] Endtags richtig zuordnen und aufloesen
Michael Trauth
trauth at uni-trier.de
Do Jun 9 02:23:33 CEST 2005
Lieber Herr Brunschoen,
Ihre Frage war:
> in einer Datei werden Auszeichnungen mit <aXYZ>text</a>
> vorgenommen, wobei XYZ = <><% und <aXYZ> beliebig oft
> und über TUSTEP-Satzgrenzen hinweg ineinander verschach-
> telt sein kann, z.B.: Text
> <aUVW>text<aABC><aGHI>blahblah</a>blöhk<MNO>mäh</a></a></a>.
>
> Wie kann TUSTEP die Endtags richtig zuordnen und folgen-
> dermaßen auflösen:
> Text
> <aUVW>text<aABC><aGHI>blahblah</aGHI>blöhk<MNO>mäh</aMNO>
> </aABC></aUVW>.
> ... vor dem geistigen Auge sehe ich ein knackiges KOPIERE
> mit vollwertiger Sprungtabelle und xx-Anweisungen, das von
> einem gedrungenem $$-MAKRO mit einem ausgewachsenen Loop
> zwischen Access und Endaccess umworben wird.
Ich glaube, Sie stellen sich das schwieriger vor als es
ist ;o)). Das Verfahren ist im Grunde ganz simpel:
- Jedesmal, wenn ein Tag <a...> vorkommt, legen Sie den
Tagnamen auf einen zu Anfang leeren Stapel obendrauf
(so dass in Ihrem Beispiel zuerst UVW, dann UVW ABC,
dann UVW ABC GHI usw. besagten Stapel bilden);
- und jedesmal wenn ein Endetag </a> vorkommt, nehmen
Sie den obersten Tagnamen vom Stapel runter und stecken
ihn in diesen Endetag hinein.
Das ist schon alles (wobei der KO-Merktext besagten Sta-
pel bildet). Ich bin sicher, dass Sie das alleine reali-
sieren koennten. Nur sicherheitshalber gebe ich Ihnen im
folgenden ein KOPIERE, das die Chose fuer Sie erledigt
(und sich auch noch um ein paar Randbedingungen kuemmert,
deshalb sind es ein paar zeilen mehr geworden als eigent-
lich noetig). Vorausgeschickt sei noch, dass ich davon
ausgehe, dass Ihr Beispieltext statt wie von Ihnen an-
gegeben
<aUVW>text<aABC><aGHI>blahblah</a>blöhk<MNO>mäh</a></a></a>
eigentlich richtig
<aUVW>text<aABC><aGHI>blahblah</a>blöhk<aMNO>mäh</a></a></a>
heissen muesste und dass die Tagnamen immer aus Nicht-
blanks bestehen, ist das korrekt? Wenn ja, probieren
Sie's mal mit:
#ko,Q,Z,,+,*
>nb <%>< <>
<nz |<%||<<a|<</a|
zf+ 1 |<|><<><[nz]<<a|
xx 1 |<|><<><[nz]||
xx 1 |<<a<>>[nb]>><>><<%| >=03|
mtd 1 1
xxb 2 |<<a|<<!a|
erz 2 1
zf+ 3 |<|><<><[nz]<</a|
xx 3 |<%|| <>>[nb]>||<=01|
xxb 4 |<</a>>|<<!/a{}>>|
erz 4 1
ete 4 |{}|
xx 5 | <>>[nb]>|||
_1__2__3__4__5
sp0 11 21 11 41 51
spn 31 8 3 8 8
spj 12 8 39 8 8
sp2 17 24 36 44 57
sp4 8 11 8 49 8
sp6 8 8 40 8 8
sp7 20 8 8 8 30
sp9 8 8 32 52 8
xxx |<<!|<<|
*eof
Viele Gruesse reihum von
Michael Trauth
---------------------------------------------------------------
Dr. Michael Trauth e-mail: trauth at uni-trier.de
Rechenzentrum office: Tel. 0651-201-3413
der Universitaet Fax 0651-201-3921
Universitaetsring secretary: Tel. 0651-201-3417
D-54286 Trier
---------------------------------------------------------------
Mehr Informationen über die Mailingliste Tustep-Liste