diff --git a/src/turkish/CatTur.gf b/src/turkish/CatTur.gf index e3044ae52..50f9541e2 100644 --- a/src/turkish/CatTur.gf +++ b/src/turkish/CatTur.gf @@ -7,15 +7,15 @@ concrete CatTur of Cat = CommonX ** open ResTur, Prelude in { lincat -- Noun - CN = {s : Number => Case => Str} ; + CN = {s : Number => Case => Str; gen : Number => Agr => Str} ; NP = {s : Case => Str ; a : Agr} ; Pron = ResTur.Pron ; - Det = {s : Str; n : Number} ; + Det = {s : Str; n : Number; useGen : Bool} ; Num = {s : Number => Case => Str; n : Number} ; Card = {s : Number => Case => Str} ; Ord = {s : Number => Case => Str} ; - Quant = {s : Str} ; + Quant = {s : Str; useGen : Bool} ; Prep = {s : Str; c : Case} ; Numeral = {s : CardOrd => Number => Case => Str ; n : Number} ; diff --git a/src/turkish/NounTur.gf b/src/turkish/NounTur.gf index 98e116158..86cd593ad 100644 --- a/src/turkish/NounTur.gf +++ b/src/turkish/NounTur.gf @@ -14,8 +14,9 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude DetQuant quant num = { s = quant.s ++ num.s ! Sg ! Nom ; - n = num.n - } ; + n = num.n; + useGen = quant.useGen + } ; NumSg = {s = \\num,c => []; n = Sg} ; NumPl = {s = \\num,c => []; n = Pl} ; @@ -28,12 +29,8 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude OrdNumeral num = {s = \\c => num.s ! NOrd ! c} ; OrdSuperl a = {s = \\n,c => "en" ++ a.s ! n ! c} ; - DefArt = { - s = [] - } ; - IndefArt = { - s = [] - } ; + DefArt = {s = []; useGen = False} ; + IndefArt = {s = []; useGen = False} ; UseN n = n ; @@ -44,26 +41,32 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude h : Harmony = {vow = f.harmony.vow; con = f.harmony.con} in case f.c.c of { - Nom => {s = \\n, c => x.s ! Gen ++ f.s ! n ! Acc }; - Acc => {s = \\_,_ => "TODO"}; + Nom => { + s = \\n, c => x.s ! Gen ++ f.s ! n ! Acc; + gen = \\_, _ => "TODO" + }; + Acc => {s = \\_,_ => "TODO"; gen = \\_, _ => "TODO"}; Gen => { s = \\n, c => x.s ! Gen ++ f.gen ! n ! {n = Sg; p = P3} - ++ BIND ++ (caseSuffixes ! c).st ! h.con ! h.vow + ++ BIND ++ (caseSuffixes ! c).st ! h.con ! h.vow; + gen = \\_, _ => "TODO" }; Dat => { s = \\n, c => x.s ! Gen ++ f.gen ! n ! {n = Sg; p = P3} - ++ datSuffixN.st ! h.con ! h.vow + ++ datSuffixN.st ! h.con ! h.vow; + gen = \\_, _ => "TODO" }; - Loc => {s = \\_,_ => "TODO"}; - Ablat => {s = \\_,_ => "TODO"}; - Abess _ => {s = \\_,_ => "TODO"} + Loc => {s = \\_,_ => "TODO"; gen = \\_, _ => "TODO"}; + Ablat => {s = \\_,_ => "TODO"; gen = \\_, _ => "TODO"}; + Abess _ => {s = \\_,_ => "TODO"; gen = \\_, _ => "TODO"} }; AdjCN ap cn = { - s = \\n,c => ap.s ! Sg ! Nom ++ cn.s ! n ! c + s = \\n,c => ap.s ! Sg ! Nom ++ cn.s ! n ! c; + gen = \\n, a => ap.s ! Sg ! Nom ++ cn.gen ! n ! a } ; } diff --git a/src/turkish/ParadigmsTur.gf b/src/turkish/ParadigmsTur.gf index f131e5cb5..698062f94 100644 --- a/src/turkish/ParadigmsTur.gf +++ b/src/turkish/ParadigmsTur.gf @@ -507,7 +507,7 @@ oper dat_Case : Prep = mkPrep [] Dat; acc_Case : Prep = mkPrep [] Dat; - mkQuant : Str -> Quant = \s -> lin Quant {s=s} ; + mkQuant : Str -> Quant = \s -> lin Quant {s=s; useGen = False} ; param AoristType = PlSyl -- more than one syllable, takes -ir