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