m4 Problem

From: Matthias Teege <matthias(at)mteege.de>
Date: Fri, 28 Apr 2000 08:08:49 +0200

Moin,

erlaubt m4 ein einmal übergebenes Argument solange durch
ein und dasselbe Macro zu quälen bis das Ergebnis eine
bestimmte Bedingung erfüllt?

Ich möchte gerne einen ausgezeichneten Text an m4
übergeben und daraus eine TeX Datei erzeugen. Leider
versteht m4 ein "<" nicht als Anfang eines Makronamens und
ich möchte (muß) deshalb die "<", ">" und "</" in
Unterstriche verwandeln. Das könnte ich unter Umständen
auch mit einem anderen Tool erreichen müßte aber sicher
etwas aufwendiger programmieren. Man kann ja vorher nicht
wissen was die Leute so in Ihre Texte schreiben und ein
pauschales "s/</_/g" reicht da unter Umständen nicht.

Mein erstes m4 Makro prüft deshalb auf das Vorhandensein
von Start- und Endtag und ersetzt dann die erwähnten Zeichen.

Hier das Makro:

define(`replace_tag',`regexp(`$1',
        `\(<\)\(\w*\)\(>\)\([<>/a-zA-Z0-9 \n]*\)\(</\)\(\2\)\(>\)',
        `_\2 \4 __\6')')

Mein Problem ist jetzt, daß immer nur jeweils ein Tagpaar
umgesetzt wird und ich also das Ergebnis der
Transformation erneut mit "replace_tag" bearbeiten müßte,
solange bis das Muster nichtmehr vorkommt. Außerdem bin
ich mir nicht sicher, inwieweit ich m4 Makros ganze
Dateien als Argument übergeben kann.

Falls euch auch nichts einfällt werde ich wohl den
umgekehrten Weg gehen und m4 Makros als Ausgabeformat
verwenden. :-)

Vielen Dank für Eure Geduld
Matthias

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 28 Apr 2000 - 08:19:05 CEST

search this site