[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