diff --git a/src/turkish/CatTur.gf b/src/turkish/CatTur.gf index 4a1a08d6..d6491af1 100644 --- a/src/turkish/CatTur.gf +++ b/src/turkish/CatTur.gf @@ -4,8 +4,11 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud lincat + -- Tensed/Untensed S = {s : Str} ; + RS = {s : Agr => Str} ; + -- Sentence Cl = {s : Tense => Polarity => Str} ; Imp = {s : Polarity => Number => Str} ; @@ -13,6 +16,11 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, HarmonyTur, Prelud CN = {s : Number => Case => Str; gen : Number => Agr => Str; h : Harmony} ; NP = {s : Case => Str ; h : Harmony; a : Agr} ; + -- Relative + RCl = {s : Tense => Polarity => Agr => Str} ; + RP = {s : Agr => Str} ; + + -- Verb VP = {s : Aspect => VForm => Str; compl : Str} ; VPSlash = Verb ** {compl : Str; c : Prep} ; Comp = {s : Aspect => VForm => Str; compl : Str} ; diff --git a/src/turkish/ExtendTur.gf b/src/turkish/ExtendTur.gf index 379ce916..2570a450 100644 --- a/src/turkish/ExtendTur.gf +++ b/src/turkish/ExtendTur.gf @@ -1,6 +1,10 @@ concrete ExtendTur of Extend = CatTur ** open ResTur, SuffixTur, Predef in { lin + GenRP n cn = { + s = cn.gen ! n.n + } ; + GenModNP num np cn = { s = \\c => np.s ! Nom ++ num.s ! num.n ! c ++ cn.gen ! num.n ! np.a ; h = cn.h ; diff --git a/src/turkish/NounTur.gf b/src/turkish/NounTur.gf index 28121f95..416fca5d 100644 --- a/src/turkish/NounTur.gf +++ b/src/turkish/NounTur.gf @@ -231,19 +231,16 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, ParamX, h = cn.h } ; - -- TODO: currently not able to generate trees. RelCN cn rs = { - s = \\n,c => "(TODO: RelCN)" ; - gen = cn.gen ; + s = \\n,c => rs.s ! {n=n; p=P3} ++ cn.s ! n ! c ; + gen = \\n,c => rs.s ! {n=n; p=P3} ++ cn.gen ! n ! c ; h = cn.h } ; RelNP np rs = { - s = \\c => "(TODO: RelNP)" ; - gen = np.gen ; + s = \\c => rs.s ! np.a ++ np.s ! c ; h = np.h ; - a = np.a ; - c = np.c + a = np.a } ; } diff --git a/src/turkish/RelativeTur.gf b/src/turkish/RelativeTur.gf index d85db6a2..1f18621c 100644 --- a/src/turkish/RelativeTur.gf +++ b/src/turkish/RelativeTur.gf @@ -2,10 +2,19 @@ concrete RelativeTur of Relative = CatTur ** open ResTur in { lin RelCl = variants {} ; - RelVP = variants {} ; + + RelVP rp vp = { + s = \\t,p,agr => rp.s ! agr ++ vp.compl ++ + case t of { + Fut => vp.s ! Perf ! VProspPart p ; + _ => vp.s ! Perf ! VImperfPart p + } + } ; + RelSlash = variants {} ; FunRP = variants {} ; - IdRP = variants {} ; + + IdRP = {s = \\_ => []} ; } diff --git a/src/turkish/ResTur.gf b/src/turkish/ResTur.gf index 75d0f000..230a9c87 100644 --- a/src/turkish/ResTur.gf +++ b/src/turkish/ResTur.gf @@ -41,6 +41,9 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur, SuffixTur in { VForm = VInf Polarity + | VImperfPart Polarity + | VPerfPart Polarity + | VProspPart Polarity | VImp Polarity Number | VFin Tense Polarity Agr ; @@ -126,6 +129,21 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur, SuffixTur in { Imperf => suffixStr negHar progrSuffix + suffixStr progrHar infinitiveSuffix } ; + VImperfPart Pos => v.stems ! VFuture ++ BIND ++ + suffixStr v.h imperfParticipleSuffix ; + VImperfPart Neg => v.stems ! VBase Hard ++ BIND ++ + suffixStr v.h negativeSuffix + + suffixStr negHar imperfParticipleSuffix ; + VPerfPart Pos => v.stems ! VBase Hard ++ BIND ++ + suffixStr v.h perfParticipleSuffix ; + VPerfPart Neg => v.stems ! VBase Hard ++ BIND ++ + suffixStr v.h negativeSuffix + + suffixStr negHar perfParticipleSuffix ; + VProspPart Pos => v.stems ! VFuture ++ BIND ++ + suffixStr v.h prospParticipleSuffix ; + VProspPart Neg => v.stems ! VBase Hard ++ BIND ++ + suffixStr v.h negativeSuffix + + suffixStr negHar prospParticipleSuffix ; VImp p n => case asp of { Perf => v.stems ! VBase Soft ++ case of { diff --git a/src/turkish/SentenceTur.gf b/src/turkish/SentenceTur.gf index 47e1a3c7..bd5261ea 100644 --- a/src/turkish/SentenceTur.gf +++ b/src/turkish/SentenceTur.gf @@ -12,7 +12,7 @@ concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in { UseQCl _ _ = variants {} ; - UseRCl _ _ _ = variants {} ; + UseRCl temp pol cl = {s = \\agr => temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p ! agr} ; SlashVP _ _ = variants {} ; AdvSlash _ _ = variants {} ; diff --git a/src/turkish/SuffixTur.gf b/src/turkish/SuffixTur.gf index 564627da..744de9e7 100644 --- a/src/turkish/SuffixTur.gf +++ b/src/turkish/SuffixTur.gf @@ -123,6 +123,10 @@ resource SuffixTur = open Prelude, Predef, HarmonyTur in { passiveInSuffix : Suffix = regSuffix "in" "n" ; passiveIlSuffix : Suffix = regSuffix "il" "l" ; + imperfParticipleSuffix : Suffix = regSuffix "en" "yen" ; + perfParticipleSuffix : Suffix = regSuffix "miş" "miş" ; + prospParticipleSuffix : Suffix = regSuffix "ecek" "yecek" ; + -- Ordinal suffix for numbers ordNumSuffix : Suffix = regSuffix21 "inci" "nci" ; -- Suffix for deriving adverb from a adjective diff --git a/src/turkish/VerbTur.gf b/src/turkish/VerbTur.gf index c38d75fd..20886c3f 100644 --- a/src/turkish/VerbTur.gf +++ b/src/turkish/VerbTur.gf @@ -62,8 +62,6 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur CompAP ap = { s = \\asp,vform => case of { - <_,VInf p> => ap.s ! Sg ! Nom ++ - mkVerbForms olmak_V ! asp ! (VInf p) ; <_,VImp p n> => ap.s ! n ! Nom ++ mkVerbForms olmak_V ! asp ! (VImp p n) ; => @@ -88,9 +86,11 @@ concrete VerbTur of Verb = CatTur ** open Prelude, ResTur, SuffixTur, HarmonyTur Neg => suffixStr ap.h negativeSuffix } + suffixStr ap.h (alethicCopulaSuffixes ! agr) ; - <_,VFin t p agr> => + <_,VFin t p agr> => ap.s ! agr.n ! Nom ++ - mkVerbForms olmak_V ! asp ! (VFin t p agr) + mkVerbForms olmak_V ! asp ! (VFin t p agr) ; + _ => ap.s ! Sg ! Nom ++ + mkVerbForms olmak_V ! asp ! vform } ; compl = [] } ;