1 # -*- coding: iso-8859-15 -*-
3 # Dieses AWK-Skript hilft beim Synchronieren der Listen der gültigen
4 # Buchstaben in den Dateien `daten/german.tr` und
5 # `skripte/lua/helper_words.lua`.
7 # Die Datei german.tr verzeichnet die in der Patgen-Eingabe verwendeten
8 # gültigen Buchstaben in Form einer Translate-Datei (siehe man patgen).
9 # Translate-Dateien sind auf 8-Bit-Kodierungen beschränkt.
11 # Für die Validierung der Wortliste wird ebenfalls eine Liste der
12 # gültigen Buchstaben benötigt. Das Skript `helper_words.lua` enthält
13 # eine solche in Form eines LPEG-Musters in der Kodierung UTF-8 (siehe
14 # dort Muster `letter`). Die Grundformen der lateinischen Buchstaben
15 # werden durch einen Intervallausdruck abgedeckt, die restlichen
16 # Buchstaben werden explizit aufgezählt.
18 # Dieses Skript erstellt aus einer Translate-Datei den
19 # LPEG-Teilausdruck, der die akzentuierten und Sonderbuchstaben abdeckt.
20 # Es wird der GAWK-Mechanismus FIELDWIDTHS zum Zugriff auf feste Spalten
21 # verwendet. Ein beispielhafter Aufruf:
23 # $ LANG=C gawk -f tr2lpeg.awk < daten/german.tr | iconv -f ISO-8859-15 -t UTF-8 > out.lua
25 # Die Ausgabe kann in die entsprechende Lua-Quelldatei eingefügt werden.
30 # Feste Spaltenbreiten (8-Bit-Zeichen).
31 FIELDWIDTHS =
"1 1 1 1"
32 # Einzug in der Ausgabe.
36 # Überlese erste Zeile mit Hyphenmins.
38 # Überlese Kommentarzeilen.
40 # Überlese Leerzeilen.
43 # Überlese Zeilen mit Grundformen lateinischer Buchstaben.
44 $
2 ~
/[a
-z
]/ && $
4 ~
toupper($
2) { next }
46 # Behandle Buchstaben mit Versalform.
48 printf "%s+ P\"%s\" + P\"%s\"\n", indent
, $
2, $
4
52 # Behandle Buchstaben ohne Versalform.
53 $
2 != "" && $
3 ==
"" {
55 match($
2, "ß"); if (RLENGTH != -1) { printf "%s+ P\"%s\" / _property_has_eszett\n", indent
, $
2 }
60 # Alle verbleibenden Zeilen.
62 printf "%s: unbekanntes Format in Zeile %d\n", FILENAME, FNR > "/dev/stderr"