[Trennmuster] Parser fuer Wortliste
Werner LEMBERG
wl at gnu.org
Mo Feb 13 10:03:14 CET 2012
> Ja, eben, /eine/ wäre nicht schlecht. Und ich hoffte, das könnte
> Lua sein ...
Hmm. Klingt ein bißchen selbstsüchtig :-) Aber Du hast schon recht:
Wo TeX ist, ist luatex und texlua auch nicht weit heutzutage.
>> Sowohl Python als auch Perl gibt's genauso unter Windows.
>
> Ja, zum reinen Ausführen von Skripten reicht das. Ich habe in
> beiden Sprachen jedoch keine Kenntnisse.
Tsk, tsk, tsk.
> Ich kenne und nutze sicher nur wenige Möglichkeiten regulärer
> Ausdrücke (mit grep und sed). Aber bereits nach kurzer
> Beschäftigung mit PEG möchte ich mich in reguläre Ausdrücke für
> kompliziertere Sachen als kurze Einzeiler auf der Kommandozeile
> nicht mehr tiefer hineinknien müssen. PEG gibt es für verschiedene
> Sprachen.
Hmm. Für Perl anscheinend nicht, zumindest finde ich nichts auf
http://bford.info/packrat/
In Perl kann man übrigens reguläre Ausdrücke mithilfe des
»x«-Modifizierers sehr übersichtlich darstellen, weil dann Whitespace
fast gänzlich ignoriert wird, z.B.
/^(?| ([0-9]+) c \1
| ([0-9]+,[0-9]+) c \1)/x
[»(?| ... )« ist »branch-reset«-Muster, damit ich in jedem Ausdruck,
der durch »|« separiert ist, immer wieder »\1« benutzen kann.]
> Die Interoperabilität ließe sich vermutlich dadurch sicherstellen,
> dass wir lokale- und kodierungsabhängige Aufgaben nicht auf
> Shell-Ebene, sondern innerhalb von "richtigen" Skriptsprachen
> erledigen.
Entschuldige, aber das ist nur ein Verschieben des Problems. Wenn wir
uns auf eine Shell einigen, z.B. bash, die ja genauso unter Windows
verfügbar ist, egalisiert sich dieses Argument.
> Ich gehe davon aus, dass in Perl, Python, Lua, Java etc. das
> Sortieren plattformübergreifend robust funktioniert, mit allen
> möglichen Kodierungen und unabhängig von den Lokaleeinstellungen des
> jeweiligen Benutzers.
Das ist korrekt, wenn man die Lokale am Anfang des Skripts setzt (so
wie ich das auch in meinen Bash-Skripten tue).
> Dein UTF-8-kodierter Zweigname
> 'Keine-Haupttrennstellen-in-zweisilbigen-Wörtern' ist da schon
> auffällig geworden.
:-)
> Die Sortierung der Liste geschieht meines Wissens mit einem Skript,
> welches nur bei dir auf dem Rechner schlummert. Dafür suche ich zum
> Beispiel eine portable Lösung.
Wie ich schon erwähnt habe: Die Sortierung ist vorgegeben durch
LC_COLLATE=de_DE.ISO8859-1
LC_CTYPE=de_DE.ISO8859-1
wobei ich noch den Parameter »-d« an »sort« übergebe, damit alles
außer Buchstaben (und Ziffern und Leerzeichen) bei der Sortierung
ignoriert wird (»Telephonbuchsortierung«).
Die Sortierreihenfolge wird durch LC_COLLATE gesetzt, also Deutsch in
Deutschland mit der Kodierung latin-1; die Definition von Buchstaben,
Ziffern, usw. spezifiziert LC_CTYPE, und das ist natürlich der gleiche
Wert.
Hier ist übrigens eine Definition von de_DE:
http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=localedata/locales/de_DE
welche wiederum auf ISO 14651 verweist:
http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=localedata/locales/iso14651_t1_common
Hier etwas zu ISO 14651:
http://en.wikipedia.org/wiki/ISO_14651
und ein bißchen mehr Erklärungen gibt's hier:
http://en.wikipedia.org/wiki/European_ordering_rules
Wer will, kann sich auch noch
http://cldr.unicode.org/
reinziehen.
Das gibt's *alles* unter Windows genauso.
Werner
Mehr Informationen über die Mailingliste Trennmuster