Wichtungskorrekturen.
[wortliste.git] / skripte / lua / tr2lpeg.awk
blobb1aaa0bf8276bca034ef830ef9714155ef9116e8
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.
29 BEGIN {
30 # Feste Spaltenbreiten (8-Bit-Zeichen).
31 FIELDWIDTHS = "1 1 1 1"
32 # Einzug in der Ausgabe.
33 indent = " "
36 # Überlese erste Zeile mit Hyphenmins.
37 NR == 1 { next }
38 # Überlese Kommentarzeilen.
39 /^%/ { next }
40 # Überlese Leerzeilen.
41 /^$/ { next }
43 # Überlese Zeilen mit Grundformen lateinischer Buchstaben.
44 $2 ~ /[a-z]/ && $4 ~ toupper($2) { next }
46 # Behandle Buchstaben mit Versalform.
47 $4 != "" {
48 printf "%s+ P\"%s\" + P\"%s\"\n", indent, $2, $4
49 next
52 # Behandle Buchstaben ohne Versalform.
53 $2 != "" && $3 == "" {
54 # Sonderbehandlung ß.
55 match($2, "ß"); if (RLENGTH != -1) { printf "%s+ P\"%s\" / _property_has_eszett\n", indent, $2 }
56 # Fertig.
57 next
60 # Alle verbleibenden Zeilen.
62 printf "%s: unbekanntes Format in Zeile %d\n", FILENAME, FNR > "/dev/stderr"
63 exit 1