From 7790defb9e579b2c16e07b4368782013d38d728e Mon Sep 17 00:00:00 2001 From: Ayberk Tosun Date: Mon, 11 Mar 2019 08:06:57 +0100 Subject: [PATCH] [WIP] Round of updates to Turkish (#15) * Add linearization for `AdAdv` which is just `cc2` * Add rudimentary linearization for `AdnCAdv` * Add rudimentary linearization for `UseCl` * Add trivial linearization for `SubjS` * Add forgotten semicolon * Override the lintype of CAdv from CommonX * Add cases for `CAdv`s * Augment the linearization of `AdnCAdv` with case information coming from the `CAdv` * Override the lintype for `AdN` * Implement linearizations for `AdN` and `AdnCAdv` * Fix the linearization for `more_CAdv` * Implment the linearization for `ComparAdvAdj` * Add a rudimentary linearizations for `ComparAdvAdjS` * Add rudimentary linearization for `BaseAP` * Add linearization for `BaseAdV` * Add linearization for `BaseAdv` * Add a new param `Gerundification` * Add a new `VForm` `VNoun` for verbal nouns * Parameterize the lintypes of S and Cl by the new `Gerundification` param * Update everything to work with the `Gerundification` parameterization * Account for the `VNoun` case in `makeVerb` * Revise the TODO for `ComparAdvAdjS` * Add the subordination suffix dik in SuffixTur (not used yet) * Formatting * Start implementing the suffix -dik in `makeVerb` * Add TODO for `ComplVS` * Fix `mkClause` * Implement a rudimentary linearization for `ComplVS` --- src/turkish/AdverbTur.gf | 16 +++++++++++++ src/turkish/CatTur.gf | 12 +++++++--- src/turkish/ConjunctionTur.gf | 15 ++++++++++++ src/turkish/GrammarTur.gf | 4 ++-- src/turkish/NounTur.gf | 2 +- src/turkish/ParadigmsTur.gf | 43 ++++++++++++++++++++++++++++------- src/turkish/PhraseTur.gf | 2 +- src/turkish/ResTur.gf | 12 ++++++++-- src/turkish/SentenceTur.gf | 3 +++ src/turkish/StructuralTur.gf | 14 +++++++----- src/turkish/SuffixTur.gf | 2 ++ src/turkish/VerbTur.gf | 5 ++++ 12 files changed, 107 insertions(+), 23 deletions(-) diff --git a/src/turkish/AdverbTur.gf b/src/turkish/AdverbTur.gf index 9b551724..31ff82c9 100644 --- a/src/turkish/AdverbTur.gf +++ b/src/turkish/AdverbTur.gf @@ -3,4 +3,20 @@ concrete AdverbTur of Adverb = CatTur ** open ResTur, Prelude in { PrepNP prep np = {s = np.s ! prep.c ++ prep.s} ; always_AdV = {s = "her zaman"} ; + + AdAdv = cc2 ; + + -- TODO: test this later; depends on less_CAdv. + AdnCAdv cadv = { s = cadv.s; c = cadv.c } ; + + ComparAdvAdj cadv a np = { + s = np.s ! cadv.c ++ cadv.s ++ a.s ! Sg ! cadv.c + } ; + + -- TODO: inflect the subject to genitive. + ComparAdvAdjS cadv a s = { + s = s.s ! SubordSuffixDik ++ cadv.s ++ a.s ! Sg ! Nom + } ; + + SubjS s1 s2 = {s = s1.s ++ s2.s ! SubordSuffixDik} ; } diff --git a/src/turkish/CatTur.gf b/src/turkish/CatTur.gf index b56c8172..21e3117c 100644 --- a/src/turkish/CatTur.gf +++ b/src/turkish/CatTur.gf @@ -1,11 +1,15 @@ ---# -path=.:../abstract:../common:../../prelude - -concrete CatTur of Cat = CommonX ** open ResTur, Prelude in { +concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, Prelude in { flags optimize=all_subs ; lincat + S = {s : Gerundification => Str} ; + + -- TODO: parameterize by tense. + Cl = {s : Gerundification => Str} ; + + -- Noun CN = {s : Number => Case => Str; gen : Number => Agr => Str} ; NP = {s : Case => Str ; a : Agr} ; @@ -22,6 +26,8 @@ concrete CatTur of Cat = CommonX ** open ResTur, Prelude in { Prep = {s : Str; c : Case} ; PrepNP = {s : Str} ; DAP = {s : Number => Case => Str} ; + CAdv = {s : Str; p : Str; c : Case} ; + AdN = {s : Str; c : Case} ; Numeral = {s : CardOrd => Number => Case => Str ; n : Number} ; Digits = {s : CardOrd => Number => Case => Str ; n : Number; tail : DTail} ; diff --git a/src/turkish/ConjunctionTur.gf b/src/turkish/ConjunctionTur.gf index 3878432e..38d8124a 100644 --- a/src/turkish/ConjunctionTur.gf +++ b/src/turkish/ConjunctionTur.gf @@ -1,4 +1,19 @@ concrete ConjunctionTur of Conjunction = CatTur ** open ResTur, Coordination, Prelude in { + lin + + -- TODO: ap2.s seems to irrelevant; investigate why. + BaseAP ap1 ap2 = { + s = ap1.s ! Sg ! Nom + } ; + + BaseAdV adv1 adv2 = { + s = adv1.s + } ; + + BaseAdv adv1 adv2 = { + s = adv1.s + } ; + } diff --git a/src/turkish/GrammarTur.gf b/src/turkish/GrammarTur.gf index 86d1ec9c..72c0c357 100644 --- a/src/turkish/GrammarTur.gf +++ b/src/turkish/GrammarTur.gf @@ -10,11 +10,11 @@ concrete GrammarTur of Grammar = QuestionTur, RelativeTur, ConjunctionTur, - TextX, + TextX - [CAdv, AdN], StructuralTur, PhraseTur, IdiomTur, - TenseX + TenseX - [CAdv, AdN] ** { flags startcat = Phr ; diff --git a/src/turkish/NounTur.gf b/src/turkish/NounTur.gf index cb68a8db..c02ee7ef 100644 --- a/src/turkish/NounTur.gf +++ b/src/turkish/NounTur.gf @@ -100,7 +100,7 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude } ; AdNum adn num = { - s = \\n,c => adn.s ++ num.s ! n ! c + s = \\n,c => num.s ! n ! adn.c ++ adn.s } ; AdjDAP det ap = { diff --git a/src/turkish/ParadigmsTur.gf b/src/turkish/ParadigmsTur.gf index e99663f8..e4b9a111 100644 --- a/src/turkish/ParadigmsTur.gf +++ b/src/turkish/ParadigmsTur.gf @@ -257,12 +257,18 @@ resource ParadigmsTur = open lin V { s = table { - VProg agr => addSuffix progBase progHar (verbSuffixes ! agr) ; - VPast agr => addSuffix pastBase pastHar (verbSuffixes ! agr) ; - VFuture agr => addSuffix futureTable futHar (verbSuffixes ! agr) ; - VAorist agr => addSuffix aoristBase aorHar (verbSuffixes ! agr) ; - VImperative => base ; - VInfinitive => inf ; + VProg agr => + addSuffix progBase progHar (verbSuffixes ! agr) ; + VPast agr => + addSuffix pastBase pastHar (verbSuffixes ! agr) ; + VFuture agr => + addSuffix futureTable futHar (verbSuffixes ! agr) ; + VAorist agr => + addSuffix aoristBase aorHar (verbSuffixes ! agr) ; + VImperative => + base ; + VInfinitive => + inf ; Gerund _ Acc => case aorHar.vow of { Ih_Har => mek + "si" ; @@ -270,8 +276,29 @@ resource ParadigmsTur = open U_Har => "TODO" ; Uh_Har => "TODO" } ; - Gerund _ _ => mek - } + Gerund _ _ => mek ; + VNoun n Gen => + case aorHar.vow of { + Ih_Har => base + "tiği" ; + I_Har => base + "tığı" ; + U_Har => base + "duğu" ; + Uh_Har => base + "düğü" + } ; + VNoun n Ablat => + case aorHar.vow of { + Ih_Har => base + "tıktan" ; + I_Har => base + "tıktan" ; + U_Har => base + "duktan" ; + Uh_Har => base + "dükten" + } ; + VNoun n _ => + case aorHar.vow of { + Ih_Har => base + "(TODO: makeVerb)" ; + I_Har => base + "(TODO: makeVerb)" ; + U_Har => base + "(TODO: makeVerb)" ; + Uh_Har => base + "(TODO: makeVerb)" + } + } ; } ; -- Implementation of noun paradigms diff --git a/src/turkish/PhraseTur.gf b/src/turkish/PhraseTur.gf index af8faf87..6af5e099 100644 --- a/src/turkish/PhraseTur.gf +++ b/src/turkish/PhraseTur.gf @@ -19,7 +19,7 @@ concrete PhraseTur of Phrase = CatTur ** open Prelude, ResTur in { UttVP vp = {s = vp.s ! VInfinitive} ; UttAP ap = {s = ap.s ! Sg ! Nom} ; UttCN n = {s = n.s ! Sg ! Nom} ; - UttS s = s ; + UttS s = {s = s.s ! None} ; UttAdv adv = adv ; NoPConj = {s = []} ; diff --git a/src/turkish/ResTur.gf b/src/turkish/ResTur.gf index 8e483cd3..254679c8 100644 --- a/src/turkish/ResTur.gf +++ b/src/turkish/ResTur.gf @@ -38,8 +38,11 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in { | VImperative | VInfinitive | Gerund Number Case + | VNoun Number Case ; + param Gerundification = None | SubordSuffixDik ; + param ConjType = Infix | Mixfix ; UseGen = NoGen | YesGen Agr | UseIndef ; @@ -79,8 +82,13 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in { mkNP : Noun -> Number -> Person -> {s : Case => Str; a : Agr} = \noun, n, p -> {s = noun.s ! n; a = {n = n; p = p}} ; - mkClause : Str -> Agr -> Verb -> {s : Str} = - \np, a, v -> ss (np ++ v.s ! VProg a) ; + mkClause : Str -> Agr -> Verb -> {s : Gerundification => Str} = + \np, a, v -> { + s = table { + None => np ++ v.s ! VProg a ; + SubordSuffixDik => np ++ v.s ! VNoun a.n Nom + } + } ; mkDet : Str -> Number -> UseGen -> {s : Str; n : Number; useGen : UseGen} = \s, n, ug -> {s = s; n = n; useGen = ug} ; diff --git a/src/turkish/SentenceTur.gf b/src/turkish/SentenceTur.gf index cd37a694..a57f55df 100644 --- a/src/turkish/SentenceTur.gf +++ b/src/turkish/SentenceTur.gf @@ -7,4 +7,7 @@ concrete SentenceTur of Sentence = CatTur ** open Prelude, ResTur in { -- TODO: Check how correct this is. EmbedVP vp = {s = (vp.s ! Gerund Sg Acc)} ; + -- TODO: rudimentary implementation; revise this. + UseCl temp pol cl = {s = cl.s} ; + } diff --git a/src/turkish/StructuralTur.gf b/src/turkish/StructuralTur.gf index 6dfdddab..18a6bfcd 100644 --- a/src/turkish/StructuralTur.gf +++ b/src/turkish/StructuralTur.gf @@ -114,8 +114,8 @@ concrete StructuralTur of Structural = CatTur ** many_Det = mkDet "birçok" Sg NoGen ; every_Det = mkDet "her" Sg NoGen ; all_Predet = {s = "her"} ; - almost_AdA = {s = "neredeyse"} ; - almost_AdN = {s = "neredeyse"} ; + almost_AdA = {s = "neredeyse"; c = Nom} ; + almost_AdN = {s = "neredeyse"; c = Nom} ; by8agent_Prep = mkPrep "tarafından" Gen ; by8means_Prep = mkPrep "tarafından" Gen ; @@ -191,7 +191,9 @@ concrete StructuralTur of Structural = CatTur ** language_title_Utt = {s = "Türkçe"} ; - more_CAdv = {s = "daha"; p = "daha"} ; + more_CAdv = {s = "fazla"; p = "fazla"; c = Ablat} ; + + less_CAdv = {s = "az"; p = "az"; c = Ablat} ; most_Predet = {s = "en çok"} ; @@ -270,10 +272,10 @@ concrete StructuralTur of Structural = CatTur ** part_Prep = { s = "(TODO: part_Prep)" ; c = Nom } ; - at_most_AdN = ss "en fazla" ; + at_most_AdN = { s = "en fazla"; c = Nom } ; - at_least_AdN = ss "en az" ; + at_least_AdN = { s = "en az"; c = Nom } ; - as_CAdv = {s = "kadar"; p = "kadar"} ; + as_CAdv = {s = "kadar"; p = "kadar"; c = Nom} ; } diff --git a/src/turkish/SuffixTur.gf b/src/turkish/SuffixTur.gf index e5545796..a1ce3e6a 100644 --- a/src/turkish/SuffixTur.gf +++ b/src/turkish/SuffixTur.gf @@ -95,6 +95,8 @@ resource SuffixTur = open Prelude, Predef, ResTur, HarmonyTur in { p1PlVerbalSuffix : Suffix = regSuffix "iz" "k" ; p2PlVerbalSuffix : Suffix = regSuffix21 "siniz" "niz" ; p3PlVerbalSuffix : Suffix = regSuffix "ler" "ler" ; + subordSuffixDik : Suffix = regSuffix2 "dik" "dikler" ; + softSubordSuffixDik : Suffix = regSuffix2 "diğ" "dikler" ; -- Ordinal suffix for numbers ordNumSuffix : Suffix = regSuffix21 "inci" "nci" ; diff --git a/src/turkish/VerbTur.gf b/src/turkish/VerbTur.gf index f2f8ff2e..1cdd483c 100644 --- a/src/turkish/VerbTur.gf +++ b/src/turkish/VerbTur.gf @@ -8,4 +8,9 @@ concrete VerbTur of Verb = CatTur ** open ResTur in { s = \\ vf => vps.c.s ++ np.s ! vps.c.c ++ vps.s ! vf ; } ; + -- TODO: test this and fix. + ComplVS vs s = { + s = \\vf => s.s ! SubordSuffixDik ++ vs.s ! vf + } ; + }