﻿ // -*- 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:]] ['\\\:?]]) ;"
  }
}
