diff --git a/next-lib/src/turkish/LexiconTur.gf b/next-lib/src/turkish/LexiconTur.gf index b85b5d8ec..72e113cf9 100644 --- a/next-lib/src/turkish/LexiconTur.gf +++ b/next-lib/src/turkish/LexiconTur.gf @@ -3,6 +3,9 @@ concrete LexiconTur of Lexicon = CatTur ** open ResTur, ParadigmsTur, Prelude in { +flags + coding=utf8; + lin airplane_N = regN "uçak" ; apartment_N = regN "apartman" ; @@ -13,12 +16,54 @@ lin boot_N = regN "ayakkabı" ; boss_N = regN "şef" ; bread_N = regN "ekmek" ; + brother_N2 = regN "kardeş" ; + butter_N = regN "yağ" ; + cap_N = regN "şapka" ; + car_N = regN "araba" ; + carpet_N = regN "kilim" ; + cat_N = regN "kedi" ; + child_N = regN "çocuk" ; + city_N = regN "şehir" ; + coat_N = regN "kazak" ; come_V = regV "gelmek" ; - day_N = regN "gün" ; father_N2 = regN "baba" ; go_V = regV "gitmek" ; house_N = regN "ev" ; mother_N2 = regN "anne" ; + pen_N = regN "kalem" ; run_V = regV "koşmek" ; stop_V = regV "durmak" ; + table_N = regN "masa" ; + television_N = regN "televizyon" ; + tree_N = regN "ağaç" ; + woman_N = regN "kadın" ; + wood_N = regN "kereste" ; + song_N = regN "şarkı" ; + back_N = regN "sırt" ; + belly_N = regN "göbek" ; + day_N = regN "gün" ; + ear_N = regN "kulak" ; + egg_N = regN "yumurta" ; + eye_N = regN "göz" ; + fire_N = regN "ateş" ; + flower_N = regN "çiçek" ; + grass_N = regN "çimen" ; + hand_N = regN "kol" ; + head_N = regN "baş" ; + heart_N = regN "kalp" ; + husband_N = regN "eş" ; + ice_N = regN "buz" ; + leg_N = regN "bacak" ; + mouth_N = regN "agız" ; + name_N = regN "ad" ; + night_N = regN "gece" ; + nose_N = regN "burun" ; + salt_N = regN "tuz" ; + sand_N = regN "kum" ; + snow_N = regN "kar" ; + tail_N = regN "kuyruk" ; + tooth_N = regN "diş" ; + wife_N = regN "eş" ; + year_N = regN "sene" ; + reason_N = regN "mazaret" ; } ; diff --git a/next-lib/src/turkish/ParadigmsTur.gf b/next-lib/src/turkish/ParadigmsTur.gf index 969a17bee..6d35ccdd8 100644 --- a/next-lib/src/turkish/ParadigmsTur.gf +++ b/next-lib/src/turkish/ParadigmsTur.gf @@ -49,13 +49,16 @@ oper regN : Str -> Noun = \base -> { s = \\n => table { - Nom => add_number n base ; - Acc => harmony4 (add_number n base) "i" ; - Dat => harmony2 (add_number n base) "e" ; - Gen => harmony4 (add_number n base) "in" ; - Loc => harmony2 (add_number n base) "de" ; - Ablat => add_number n base ; - Abess => add_number n base + Nom => add_number n base ; + Acc => harmony4 (add_number n base) "i" ; + Dat => harmony2 (add_number n base) "e" ; + Gen => harmony4 (add_number n base) "in" ; + Loc => harmony2 (add_number n base) "de" ; + Ablat => harmony2 (add_number n base) "den" ; + Abess p => case p of { + Pos => harmony4 (add_number n base) "li" ; + Neg => harmony4 (add_number n base) "siz" + } } ; gen = \\n => table { {n=Sg; p=P1} => harmony4 (add_number n base) "im" ; diff --git a/next-lib/src/turkish/ResTur.gf b/next-lib/src/turkish/ResTur.gf index e2cb748c6..baacf68a7 100644 --- a/next-lib/src/turkish/ResTur.gf +++ b/next-lib/src/turkish/ResTur.gf @@ -4,8 +4,11 @@ resource ResTur = ParamX ** open Prelude, Predef in { --2 For $Noun$ + flags + coding=utf8 ; + param - Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess ; + Case = Nom | Acc | Dat | Gen | Loc | Ablat | Abess Polarity ; Species = Indef | Def ; @@ -60,48 +63,66 @@ resource ResTur = ParamX ** open Prelude, Predef in { oper harmony4 : Str -> Str -> Str - = \base,suffix0 -> - let c : Str = - case base of { - _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+ - ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ; - _ => error "harmony4" - } ; + = \base0,suffix0 -> + let buffer : Str = + case dp 1 base0 + take 1 suffix0 of { + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => "y" ; + _ => "" + } ; h : Str = - case c of { - ("ı"|"a") => "ı" ; - ("i"|"e") => "i" ; - ("u"|"o") => "u" ; - ("ü"|"ö") => "ü" + case base0 of { + _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+ + ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => + case c of { + ("ı"|"a") => "ı" ; + ("i"|"e") => "i" ; + ("u"|"o") => "u" ; + ("ü"|"ö") => "ü" + } ; + _ => error ("harmony4") } ; + base : Str = + case dp 1 base0 + take 1 suffix0 of { + ("k")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => tk 1 base0 + "ğ" ; + _ => base0 + } ; suffix : Str = case suffix0 of { s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*) - + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") + + ("ı"|"i"|"u"|"ü") +s2 => s1+h+s2 ; s => s } - in base + suffix ; + in base + buffer + suffix ; harmony2 : Str -> Str -> Str = \base,suffix0 -> - let c : Str = + let buffer : Str = + case dp 1 base + take 1 suffix0 of { + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") => "n" ; + _ => "" + } ; + h : Str = case base of { _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+ - ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => c ; + ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => + case c of { + ("a"|"ı"|"u"|"o") => "a" ; + ("e"|"i"|"ü"|"ö") => "e" + } ; _ => error "harmony2" } ; - h : Str = - case c of { - ("a"|"ı"|"u"|"o") => "a" ; - ("e"|"i"|"ü"|"ö") => "e" - } ; - suffix : Str = + suffix1 : Str = case suffix0 of { s1@(("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")*) - + ("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö") + + ("a"|"e") +s2 => s1+h+s2 ; s => s - } - in base + suffix ; + } ; + suffix : Str = + case dp 1 base + take 1 suffix1 of { + ("ç"|"p"|"ş"|"k"|"f")+("d") => "t"+drop 1 suffix1 ; + _ => suffix1 + } ; + in base + buffer + suffix ; }