From 664a413df8fa884a7cccbeb2c48c15b017ab38ee Mon Sep 17 00:00:00 2001 From: krangelov Date: Tue, 12 Mar 2019 20:39:49 +0100 Subject: [PATCH] added trivial morphological functions --- src/turkish/CatTur.gf | 4 ++-- src/turkish/DictTur.gf | 2 +- src/turkish/ParadigmsTur.gf | 32 +++++++++++++++++++++++++++----- src/turkish/ResTur.gf | 2 +- src/turkish/StructuralTur.gf | 8 ++++---- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/turkish/CatTur.gf b/src/turkish/CatTur.gf index 21e3117cb..b0c381541 100644 --- a/src/turkish/CatTur.gf +++ b/src/turkish/CatTur.gf @@ -36,8 +36,8 @@ concrete CatTur of Cat = CommonX - [CAdv,AdN] ** open ResTur, Prelude in { AP = {s : Number => Case => Str} ; -- Open lexical classes, e.g. Lexicon - V, VS, VQ, VA = Verb ; - V2, V2Q, V2V, V2A, V2S = Verb ** {c : Prep} ; + V, VS, VV, VQ, VA = Verb ; + V2, V2S, V2V, V2Q, V2A = Verb ** {c : Prep} ; V3 = Verb ** {c1,c2 : Prep} ; A = Adjective ; diff --git a/src/turkish/DictTur.gf b/src/turkish/DictTur.gf index fd93e9e72..6219c52a3 100644 --- a/src/turkish/DictTur.gf +++ b/src/turkish/DictTur.gf @@ -23865,4 +23865,4 @@ flags lin zuhrriyet_N = mkN "zürriyet" "zürriyet" ; lin zuhyuf_N = mkN "züyuf" ; lin washington_PN = regPN "Washington" ; -} \ No newline at end of file +} diff --git a/src/turkish/ParadigmsTur.gf b/src/turkish/ParadigmsTur.gf index e4b9a1119..9cbe193c4 100644 --- a/src/turkish/ParadigmsTur.gf +++ b/src/turkish/ParadigmsTur.gf @@ -51,7 +51,14 @@ resource ParadigmsTur = open mkV3 : (konusmak : V) -> Prep -> Prep -> V3 ; } ; - mkV2S : V -> V2S = \verb -> lin V2S (verb ** {c = no_Prep}) ; + mkV2A : V -> V2A = \verb -> lin V2A (verb ** {c = noPrep}) ; + mkV2V : V -> V2V = \verb -> lin V2V (verb ** {c = noPrep}) ; + mkV2S : V -> V2S = \verb -> lin V2S (verb ** {c = noPrep}) ; + + mkVA : V -> VA = \verb -> verb ; + mkVV : V -> VV = \verb -> verb ; + mkVS : V -> VS = \verb -> verb ; + mkVQ : V -> VQ = \verb -> verb ; -- worst-case function -- bases of all forms are required. @@ -78,14 +85,14 @@ resource ParadigmsTur = open mkV2 = overload { -- sormak - mkV2 : V -> V2 = \verb -> verb ** lin V2 {c = no_Prep} ; + mkV2 : V -> V2 = \verb -> verb ** lin V2 {c = noPrep} ; -- (bir şeyden) korkmak mkV2 : V -> Prep -> V2 = \verb,c -> verb ** lin V2 {c = c} ; } ; mkV3 = overload { -- (birine bir şeyi) satmak - mkV3 : V -> V3 = \verb -> verb ** lin V3 {c1 = no_Prep; c2 = no_Prep} ; + mkV3 : V -> V3 = \verb -> verb ** lin V3 {c1 = noPrep; c2 = noPrep} ; -- (biri ile bir şeyi) konuşmak mkV3 : V -> Prep -> Prep -> V3 = \verb,c1,c2 -> verb ** lin V3 {c1 = c1; c2 = c2} ; @@ -110,7 +117,11 @@ resource ParadigmsTur = open mkN : (zeytin, yag : N) -> N ; } ; - mkN2 : Str -> N2 ; + mkN : overload { + -- regular noun, only nominative case is needed + mkN2 : Str -> N2 ; + mkN2 : N -> N2 ; + } ; mkN3 : Str -> N3 ; @@ -191,6 +202,9 @@ resource ParadigmsTur = open -- Adverbs mkAdv : Str -> Adv ; + mkAdV : Str -> AdV ; + mkAdA : Str -> AdA ; + mkAdN : Str -> Case -> AdN ; --Implementation of verb paradigms @@ -456,12 +470,20 @@ resource ParadigmsTur = open \n1,n2 -> linkNoun n1 n2 Indef Con ; } ; - mkN2 base = (mkN base) ** lin N2 {c = lin Prep {s=[]; c=Gen}} ; + mkN2 = overload { + mkN2 : Str -> N2 = + \base -> (mkN base) ** lin N2 {c = lin Prep {s=[]; c=Gen}} ; + mkN2 : N -> N2 = + \n -> n ** lin N2 {c = lin Prep {s=[]; c=Gen}} ; + } ; mkN3 base = (mkN base) ** lin N3 {c1,c2 = lin Prep {s=[]; c=Gen}} ; -- Implementation for adverb paradigms. mkAdv s = lin Adv { s = s } ; + mkAdV s = lin AdV { s = s } ; + mkAdA s = lin AdA { s = s } ; + mkAdN s c = lin AdN { s = s; c = c } ; -- Implementation of adjactive paradigms mkA = overload { diff --git a/src/turkish/ResTur.gf b/src/turkish/ResTur.gf index 254679c82..cd3f61122 100644 --- a/src/turkish/ResTur.gf +++ b/src/turkish/ResTur.gf @@ -74,7 +74,7 @@ resource ResTur = ParamX ** open Prelude, Predef, HarmonyTur in { } ; -- Prep - no_Prep = mkPrep [] Acc; + noPrep = mkPrep [] Acc; mkPrep : Str -> Case -> {s : Str; c : Case; lock_Prep : {}} = \s, c -> lin Prep {s=s; c=c}; diff --git a/src/turkish/StructuralTur.gf b/src/turkish/StructuralTur.gf index 18a6bfcdc..a863d533f 100644 --- a/src/turkish/StructuralTur.gf +++ b/src/turkish/StructuralTur.gf @@ -209,15 +209,15 @@ concrete StructuralTur of Structural = CatTur ** where_IAdv = {s = "nerede"} ; can8know_VV = { - s = "(TODO: can8know_VV)" + s = \\_ => "(TODO: can8know_VV)" } ; can_VV = { - s = "(TODO: can_VV)" + s = \\_ => "(TODO: can_VV)" } ; must_VV = { - s = "(TODO: must_VV)" + s = \\_ => "(TODO: must_VV)" } ; not_Predet = { @@ -246,7 +246,7 @@ concrete StructuralTur of Structural = CatTur ** -- TODO: this depends on the linearization for `ComplVV` and is really a -- morphological construct so it might be a bit tricky to implement. - want_VV = { s = "(TODO: want_VV)" } ; + want_VV = { s = \\_ => "(TODO: want_VV)" } ; whatPl_IP = { s = "neler" } ;