Preprozessoren / Lex und Yacc
Preprozessoren cpp und m4
Preprozessoren sind Programme, die vor dem eigentlichen Compilieren
angeworfen werden, um den Sourcecode zu erweitern.
cpp
cpp ist der Standardpreprozessor, der vom C-compiler benutzt wird.
Er kann:
- einfache Macros expandieren
- Files includen
- einfache Bedingungen
m4
m4 ist ein relativ selten benutzter Alleskönner
Er kann:
- alles was cpp auch kann, aber ohne Beschränkungen
- In einem Macro ein weiteres Macro definieren
- Rechnen und einfache Stringverwaltung
- Unix-programme bzw. -scripte starten und den Output einfangen
lex und yacc
lex und yacc sind Programme, die oft beim Compilerbau eingesetzt werden.
Bei komplizierten Parsing-Problemen (z.B. beim Einlesen eines Eingabefiles,
das ein bestimmtes Format haben muss) sind sie sehr hilfreich und reduzieren
den nötigen Sourcecode (z.B. auf ein Zehntel).
lex
lex findet Textmuster (wie sie z.B. im Unixbefehl grep verwendet
werden können) und startet daraufhin Aktionen in der jeweiligen
Programmiersprache (z.B. C oder Fortran)
yacc
yacc überprüft Grammatiken die in einer
Backus-Naur-Form vorliegen muss und startet Aktionen in der jeweiligen
Programmiersprache (z.B. C oder Fortran)