Übung 7

  1. Begründen Sie, wieso reguläre Ausdrücke nicht ausreichen, um z.B. eine mathematische Berechnung auf gültige Klammerung zu prüfen. Welches Perl-Feature ermöglicht es, so eine Prüfung dort dennoch durchzufüren?
  2. Begründen Sie, wieso der in der Vorlesung vorgestellte Ausdruck "(\\.|[^\\"])*" nicht zwangläufig alle in C erlaubten Zeichenketten findet, und erarbeiten Sie einen Ausdruck, der dieses Problem beseitigt. Finden Sie dazu zuerst heraus, welche gültigen C-Zeichenketten womöglich nicht gefunden werden. Fomulieren Sie eine entsprechende Bedingung für Ihren Lösungsvorschlag.
  3. Lassen Sie das Programm grep mit geeigneten Mustern über verschiedene Dateien laufen, und prüfen Sie, ob die Ausgabe Ihrer Erwartung entspricht. Verwenden Sie auch die in der Vorlesung vorgestellten Optionen (e, n, v, i, h, H, l, q, c, B, A, C und color). Verwenden Sie verschiedene Text- und Binärdateien und die Standardeingabe (/dev/stdin bzw. -) als Eingabedateien. Lassen Sie ein Suchmuster mit einem Bindestrich anfangen. Suchen Sie mit der Option -r rekursiv in Unterverzeichnissen. Kombinieren Sie die color-Option mit einer Ausgabeumleitung (im einfachsten Fall mit | cat).
  4. Vergleichen Sie Dateien mit cmp und diff. Verwenden Sie verschiedene Kombinationen, also gleiche, verschiedene, verschieden große aber ansonsten gleiche, Text- und Binärdateien als Eingaben. Probieren Sie die in der Vorlesung vorgestellten Optionen aus.
  5. Erklären Sie, wieso man zum Test auf Gleichheit lieber cmp als diff verwenden soll, bzw. wann dieser Unterschied wichtig oder weniger wichtig sein könnte.