m4 (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

m4 ist eine Makro-Programmiersprache, die von Brian Kernighan und Dennis Ritchie entwickelt wurde.

Anwendung[Bearbeiten]

Ein Makroprozessor ist ein Computerprogramm, das Zeichenfolgen innerhalb eines Textes durch andere Zeichenfolgen ersetzt. Es ermöglicht z. B. die Erstellung und Benutzung von wiederverwertbaren Textbausteinen in Textverarbeitungsprogrammen.

Geschichte[Bearbeiten]

Makroprozessoren waren weit verbreitet, als Computerprogramme noch hauptsächlich in Assembler geschrieben wurden. In diesen Anfangstagen der Computertechnik mussten Programmierer häufig immer wiederkehrende Textpassagen in ihren Programmen verwenden. Bald fing man an, einfache Möglichkeiten zu entwickeln, Text wiederzuverwenden. Schnell stellte sich heraus, dass man nicht nur ganze Textpassagen wiederverwenden konnte, sondern bei Bedarf auch einzelne Teile davon ersetzen und so komplexe Makros schreiben konnte. M4 wurde 1977 entwickelt. Es war die erste Makrosprache, mit der Rational Fortran (Ratfor) implementiert wurde, und ist heute Bestandteil der meisten Unix-Varianten. Ein Hauptanwendungsgebiet ist heutzutage das autoconf-Tool des GNU-Projektes. Früher wurde es darüber hinaus auch für die Konfiguration des damals weit verbreiteten MTA sendmail verwendet.

Eigenschaften[Bearbeiten]

M4 bietet folgende Funktionen:

  • Ersetzen von Text
  • Substituieren von Parametern
  • Einfügen von Dateien
  • Manipulation von Zeichenketten
  • Bedingte Ausdrücke
  • Arithmetische Ausdrücke
  • Schnittstelle zum Betriebssystem
  • Diagnosemöglichkeiten für den Programmierer

Anders als die meisten früheren Makroprozessoren ist M4 nicht auf irgendeine spezielle (Computer- oder menschliche) Sprache ausgelegt; historisch wurde es jedoch entwickelt, um den Ratfor-Dialekt von Fortran zu unterstützen. Darüber hinaus ist M4 nicht nur Turing-vollständig, sondern auch eine praktische Programmiersprache.

Beispiel[Bearbeiten]

Das nachfolgende Codefragment ist ein einfaches Beispiel, das z. B. als Teil einer HTML-Bibliothek verwendet werden kann. Es definiert ein Makro, welches Kapitel automatisch nummeriert:

divert(-1)
define(`H2_COUNT', 0)
define(`H2', `define(`H2_COUNT', incr(H2_COUNT))' dnl
  `<h2>H2_COUNT. $1</h2>')
divert(1)dnl

H2(Erstes Kapitel)
H2(Zweites Kapitel)
H2(Schluss)

M4 erzeugt daraus den folgenden Text:

<h2>1. Erstes Kapitel</h2>
<h2>2. Zweites Kapitel</h2>
<h2>3. Schluss</h2>

Freie Implementierungen[Bearbeiten]

Es gibt eine GNU-Version von m4. FreeBSD, NetBSD und OpenBSD liefern darüber hinaus eigene Implementierungen der M4-Sprache.

Referenzen[Bearbeiten]

  • Aus dem Englischen übersetzt von [1]
  • Brian W. Kernighan and Dennis M. Ritchie. The M4 macro processor. Technical report, Bell Laboratories, Murray Hill, New Jersey, USA, 1977. pdf
  • Kenneth J. Turner. Exploiting the m4 macro language. Technical Report CSM-126, Department of Computing Science and Mathematics, University of Stirling, Scotland, September 1994. pdf
  • René Seindal. GNU M4 Manual. GNU Press. 2004. [2]

Weblinks[Bearbeiten]