blob: 1ba9f5b92ea9db8f50c2ebf2d5670084d29dc2fb [file] [log] [blame]
 // -*- Coding: utf-8; -*-
//--------------------------------------------------------------------
// Copyright (c) 1999-2002, International Business Machines
// Corporation and others. All Rights Reserved.
//--------------------------------------------------------------------
// THIS IS A MACHINE-GENERATED FILE
// Tool: dumpicurules.bat
// Source: ../../../impl/data/Transliterator_Greek_Latin_UNGEGN.txt
// Date: Sat Jul 27 10:31:01 2002
//--------------------------------------------------------------------
// Greek_Latin_UNGEGN
t_Grek_Latn_UNGEGN {
Rule {
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// For modern Greek, based on UNGEGN rules.
// Rules are predicated on running NFD first, and NFC afterwards
// MINIMAL FILTER GENERATED FOR: Greek-Latin/UNGEGN
// WARNING: need to add accents to both filters ###
// :: [́̄̆̈;µ·ÀÂÈÊÌÎÒÔÙÛàâèêìîòôùûĈ-ĉĜ-ĝĤ-ĥĴ-ĵŜ-ŝŴ-ŷǛ-ǜǸ-ǹ̀̂̓-̔̀͂-̓ͅͺ;Ά-ΊΌΎ-ΡΣ-ώϐ-ϖϰ-ϵЀЍѐѝḔ-ḕṐ-ṑẀ-ẁẐ-ẑẤ-ậẰ-ằẾ-ệỐ-ộỜ-ờỪ-ừỲ-ỳἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼι῁-ῄῆ-῍῏-ΐῖ-Ί῝῟-῭ῲ-ῴῶ-ῼΩ] ;
":: [[[:Greek:][:Mn:][:Me:]] [\\\:-;?\u00B7\u037E\u0387]] ;"
"::NFD (NFC) ;"
// Useful variables
"$lower = [[:latin:][:greek:] & [:Ll:]] ;"
"$upper = [[:latin:][:greek:] & [:Lu:]] ;"
"$accent = [[:Mn:][:Me:]] ;"
"$macron = ̄ ;"
"$ddot = ̈ ;"
"$lcgvowel = [αεηιουω] ;"
"$ucgvowel = [ΑΕΗΙΟΥΩ] ;"
"$gvowel = [$lcgvowel $ucgvowel] ;"
"$lcgvowelC = [$lcgvowel $accent] ;"
"$evowel = [aeiouyAEIOUY];"
"$vowel = [ $evowel $gvowel] ;"
"$beforeLower = $accent * $lower ;"
"$gammaLike = [ΓΚΞΧγκξχϰ] ;"
"$egammaLike = [GKXCgkxc] ;"
"$smooth = ̓ ;"
"$rough = ̔ ;"
"$iotasub = ͅ ;"
"$softener = [βΒγΓδΔζΖλΛμΜνΝρΡ$gvowel] ;"
"$under = ̱;"
"$caron = ̌;"
"$afterLetter = [:L:] [\\\'$accent]* ;"
"$beforeLetter = [\\\'$accent]* [:L:] ;"
// Fix punctuation
// preserve orginal
"\\\: <> \\\: $under ;"
"\\\? <> \\\? $under ;"
"\\\; <> \\\? ;"
"· <> \\\: ;"
// Fix any ancient characters that creep in
"͂ > ́ ;"
"̂ > ́ ;"
"̀ > ́ ;"
"$smooth > ;"
"$rough > ;"
"$iotasub > ;"
"ͺ > ;"
// need to have these up here so the rules don't mask
"η <> i $under ;"
"Η <> I $under ;"
"Ψ } $beforeLower <> Ps ;"
"Ψ <> PS ;"
"ψ <> ps ;"
"ω <> o $under ;"
"Ω <> O $under;"
// at begining or end of word, convert mp to b
"[^[:L:]$accent] { μπ > b ;"
"μπ } [^[:L:]$accent] > b ;"
"[^[:L:]$accent] { [Μμ][Ππ] > B ;"
"[Μμ][Ππ] } [^[:L:]$accent] > B ;"
"μπ < b ;"
"Μπ < B } $beforeLower ;"
"ΜΠ < B ;"
// handle diphthongs ending with upsilon
"ου <> ou ;"
"ΟΥ <> OU ;"
"Ου <> Ou ;"
"οΥ <> oU ;"
"$fmaker = [aeiAEI] $under ? ;"
"$shiftForwardVowels = [[:Mn:]-[\u0308]];" // note: a diaeresis keeps the items separate
"$fmaker { υ ( $shiftForwardVowels )* } $softener > $1 v $under ;"
"υ $1 < ( $shiftForwardVowels )* v $under ;"
"$fmaker { υ ( $shiftForwardVowels )* } > $1 f $under;"
"υ $1 < ( $shiftForwardVowels )* f $under ;"
"$fmaker { Υ } $softener <> V $under ;"
"$fmaker { Υ <> U $under ;"
"υ <> y ;"
"Υ <> Y ;"
// NORMAL
"α <> a ;"
"Α <> A ;"
"β <> v ;"
"Β <> V ;"
"γ } $gammaLike <> n } $egammaLike ;"
"γ <> g ;"
"Γ } $gammaLike <> N } $egammaLike ;"
"Γ <> G ;"
"δ <> d ;"
"Δ <> D ;"
"ε <> e ;"
"Ε <> E ;"
"ζ <> z ;"
"Ζ <> Z ;"
"θ <> th ;"
"Θ } $beforeLower <> Th ;"
"Θ <> TH ;"
"ι <> i ;"
"Ι <> I ;"
"κ <> k ;"
"Κ <> K ;"
"λ <> l ;"
"Λ <> L ;"
"μ <> m ;"
"Μ <> M ;"
"ν } $gammaLike > n\\\' ;"
"ν <> n ;"
"Ν } $gammaLike <> N\\\' ;"
"Ν <> N ;"
"ξ <> x ;"
"Ξ <> X ;"
"ο <> o ;"
"Ο <> O ;"
"π <> p ;"
"Π <> P ;"
"ρ <> r ;"
"Ρ <> R ;"
"[Pp] { } ς > \\\' ;"
"[Pp] { } σ > \\\' ;"
// Caron means exception
// before a letter, initial
"ς } $beforeLetter <> s $under } $beforeLetter;"
"σ } $beforeLetter <> s } $beforeLetter;"
// otherwise, after a letter = final
"$afterLetter { σ <> $afterLetter { s $under;"
"$afterLetter { ς <> $afterLetter { s ;"
// otherwise (isolated) = initial
"ς <> s $under;"
"σ <> s ;"
"[Pp] { Σ <> \\\'S ;"
"Σ <> S ;"
"τ <> t ;"
"Τ <> T ;"
"φ <> f ;"
"Φ <> F ;"
"χ <> ch ;"
"Χ } $beforeLower <> Ch ;"
"Χ <> CH ;"
// Completeness for ASCII
// $ignore = [[:Mark:]''] * ;
"| ch < h ;"
"| k < c ;"
"| i < j ;"
"| k < q ;"
"| b < u } $vowel ;"
"| b < w } $vowel ;"
"| y < u ;"
"| y < w ;"
"| Ch < H ;"
"| K < C ;"
"| I < J ;"
"| K < Q ;"
"| B < W } $vowel ;"
"| B < U } $vowel ;"
"| Y < W ;"
"| Y < U ;"
// Completeness for Greek
"ϐ > | β ;"
"ϑ > | θ ;"
"ϒ > | Υ ;"
"ϕ > | φ ;"
"ϖ > | π ;"
"ϰ > | κ ;"
"ϱ > | ρ ;"
"ϲ > | σ ;"
"ϳ > j ;"
"ϴ > | Θ ;"
"ϵ > | ε ;"
"µ > | μ ;"
// delete any trailing ' marks used for roundtripping
"< [Ππ] { \\\' } [Ss] ;"
"< [Νν] { \\\' } $egammaLike ;"
"::NFC (NFD) ;"
// MINIMAL FILTER GENERATED FOR: Latin-Greek/UNGEGN BACKWARD
":: ([[[:Latin:][:Mn:][:Me:]] ['\\\:?]]) ;"
}
}