From 259b75753e3f540fb3a823c43294d7206d626d5c Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 28 Aug 2019 16:01:31 +0200 Subject: [PATCH] (Som) Add more variants of VV --- src/somali/CatSom.gf | 5 +++-- src/somali/IdiomSom.gf | 2 +- src/somali/ParadigmsSom.gf | 22 ++++++++++++++++++++++ src/somali/ResSom.gf | 24 +++++++++++++++--------- src/somali/StructuralSom.gf | 8 ++++---- src/somali/VerbSom.gf | 16 ++++++++++++---- src/somali/unittest/vp.gftest | 8 ++++++++ 7 files changed, 65 insertions(+), 20 deletions(-) diff --git a/src/somali/CatSom.gf b/src/somali/CatSom.gf index e23c9ca0b..cf3668c25 100644 --- a/src/somali/CatSom.gf +++ b/src/somali/CatSom.gf @@ -98,7 +98,6 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in { -- additional lexicon modules. V, - VV, -- verb-phrase-complement verb e.g. "want" -- TODO: VPs that have sentential complement use waxa as stm? see Nilsson p. 68 VS, -- sentence-complement verb e.g. "claim" -- TODO: eventually different lincats VQ, -- question-complement verb e.g. "wonder" @@ -106,7 +105,9 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in { V2V, -- verb with NP and V complement e.g. "cause" V2S, -- verb with NP and S complement e.g. "tell" V2Q, -- verb with NP and Q complement e.g. "ask" - V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint" + V2A = ResSom.Verb ; -- verb with NP and AP complement e.g. "paint" + + VV = ResSom.VV ; -- verb-phrase-complement verb e.g. "want" V2 = ResSom.Verb2 ; V3 = ResSom.Verb3 ; diff --git a/src/somali/IdiomSom.gf b/src/somali/IdiomSom.gf index db6b84759..01f7948fe 100644 --- a/src/somali/IdiomSom.gf +++ b/src/somali/IdiomSom.gf @@ -40,7 +40,7 @@ concrete IdiomSom of Idiom = CatSom ** open Prelude, ResSom, VerbSom in { } ; - {- TODO: Saeed p. 92 optative + {- TODO: Saeed p. 92 and 207, optative -- : VP -> Utt ; -- let's go ImpPl1 vp = { } ; diff --git a/src/somali/ParadigmsSom.gf b/src/somali/ParadigmsSom.gf index bb7891e57..c02489964 100644 --- a/src/somali/ParadigmsSom.gf +++ b/src/somali/ParadigmsSom.gf @@ -32,6 +32,11 @@ oper u : Preposition ; noPrep : Preposition ; + -- TODO: add subjunctive too! + VVForm : Type ; -- Argument to give to mkVV + infinitive : VVForm ; -- Takes its complement in infinitive + waa_in : VVForm ; -- No explicit verb, just uses "waa in" construction + --2 Nouns @@ -85,6 +90,11 @@ oper mkV3 : V -> (_,_ : Preposition) -> V2 ; -- Already constructed verb with preposition } ; + mkVV : overload { + mkVV : (kar : Str) -> VV ; -- VV that takes its complement in infinitive. + mkVV : VVForm -> VV ; -- VV such as "waa in" + } ; + -- TODO: actual constructors -- mkVA : Str -> VA = \s -> lin VA (mkVerb s) ; -- @@ -161,6 +171,10 @@ oper la = ResSom.La ; u = ResSom.U ; noPrep = ResSom.NoPrep ; + + VVForm = Bool ; + infinitive = False ; + waa_in = True ; ------------------------ mkN = overload { @@ -217,6 +231,14 @@ oper mkV3 : V -> (_,_ : Preposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ; } ; + mkVV = overload { + mkVV : (kar : Str) -> VV -- VV that takes its complement in infinitive. + = \kar -> lin VV ({isVS=False} ** mkV kar) ; + mkVV : VVForm -> VV -- VV such as "waa in" + = \b -> let dummyV : V = mkV "in" + in lin VV (dummyV ** {isVS=b ; s = \\_ => "in"}) + } ; + possPrep : N -> CatSom.Prep = \dhex -> emptyPrep ** { miscAdv = \\agr => let qnt = PossPron (pronTable ! agr) ; diff --git a/src/somali/ResSom.gf b/src/somali/ResSom.gf index e65792270..201401e6f 100644 --- a/src/somali/ResSom.gf +++ b/src/somali/ResSom.gf @@ -471,6 +471,8 @@ oper Verb2 : Type = Verb ** {c2 : Preposition} ; Verb3 : Type = Verb2 ** {c3 : Preposition} ; + VV : Type = Verb ** {isVS : Bool} ; + -- Saeed page 79: -- "… the reference form is the imperative singular form -- since it corresponds to the form of the basic root." @@ -701,7 +703,7 @@ oper c2 : PrepCombination ; -- Prepositions can combine together and with object pronoun. obj2 : NPLite ; -- {s : Str ; a : PrepAgr} secObj : Str ; -- if two overt pronoun objects - vComp : Str ; -- VV complement + vComp : {pr,pst : Str} -- VV complement } ; VPSlash : Type = VerbPhrase ; @@ -709,7 +711,8 @@ oper useV : Verb -> VerbPhrase = \v -> v ** { comp = \\_ => <[],[]> ; pred = case v.isCopula of {True => Copula ; _ => NoPred} ; - vComp,berri,miscAdv,refl = [] ; + vComp = {pr,pst = []} ; + berri,miscAdv,refl = [] ; c2 = Single NoPrep ; obj2 = {s = [] ; a = P3_Prep} ; secObj = [] @@ -849,16 +852,18 @@ oper Statement => case of { => {p1 = "waa" ; p2 = []} ; _ => stmarkerNoContr ! subj.a ! p }} ; - in wordOrder subjnoun subjpron stm obj pred vp cltyp ; + in wordOrder subjnoun stm obj pred vp cltyp ; } where { vp : VerbPhrase = case isPassive vps of { True => complSlash (insertComp vps np) ; _ => complSlash vps } ; - subj : NounPhrase = case isPassive vps of {True => impersNP ; _ => np} + subj : NounPhrase = case isPassive vps of { + True => impersNP ; + _ => np } } ; - wordOrder : (sn,sp : Str) -> (stm,obj : {p1,p2 : Str}) -> {fin,inf : Str} -> VerbPhrase -> ClType -> BaseCl = - \subjnoun,subjpron,stm,obj,pred,vp,cltyp -> { + wordOrder : (sn : Str) -> (stm,obj : {p1,p2 : Str}) -> {fin,inf : Str} -> VerbPhrase -> ClType -> BaseCl = + \subjnoun,stm,obj,pred,vp,cltyp -> { {- Saeed p. 210-211: "The relative clause resembles a main clause in syntax except that the tendency for verb final order is much stronger. [..] Certain elements such as subject clitic pronouns, and the negative word aan 'not' are @@ -870,7 +875,8 @@ oper Subord => [] ; _ => obj.p1 } ; -- noun object if it's a statement stm = stm.p1 ; -- sentence type marker; empty if subordinate and positive - afterSTM = stm.p2 -- possible subj. pronoun + afterSTM = vp.vComp.pr -- "waa in" construction + ++ stm.p2 -- possible subj. pronoun ++ case cltyp of { Subord => obj.p1 ; -- noun object if it's subordinate clause _ => [] } @@ -878,7 +884,7 @@ oper ++ vp.sii -- restricted set of particles ++ vp.dhex -- restricted set of nouns/adverbials ++ vp.secObj -- "second object" - ++ vp.vComp -- VV complement + ++ vp.vComp.pst -- VV complement ++ pred.inf -- potential infinitive/participle ++ pred.fin -- the verb inflected ++ vp.miscAdv } ; ---- NB. Only used if there are several adverbs. @@ -953,7 +959,7 @@ oper => {p1 = "aan" ; p2 = []} ; _ => {p1,p2 = []} } ; - wo = wordOrder [] [] stm (vp'.comp ! pagr2agr vp.obj2.a) inf vp' cltyp ; + wo = wordOrder [] stm (vp'.comp ! pagr2agr vp.obj2.a) inf vp' cltyp ; in wo.beforeSTM ++ wo.stm ++ wo.afterSTM ; linCN : CNoun -> Str = \cn -> cn.s ! Indef Sg ++ cn.mod ! Indefinite ! Sg ! Abs ; diff --git a/src/somali/StructuralSom.gf b/src/somali/StructuralSom.gf index 62f295036..2f7d043d5 100644 --- a/src/somali/StructuralSom.gf +++ b/src/somali/StructuralSom.gf @@ -176,11 +176,11 @@ lin yes_Utt = ss "haa" ; ------- -- Verb -lin have_V2 = mkV2 have_V noPrep ; +lin have_V2 = mkV2 have_V noPrep ; -- TODO: check if {sii = "l" ++ BIND ; isCopula=True} makes sense for present tense negative lin can8know_VV = can_VV ; -- can (capacity) -lin can_VV = mkV "kar" ; -- can (possibility) -{-lin must_VV = mkV "" ; -lin want_VV = mkV "" ; +lin can_VV = mkVV "kar" ; -- can (possibility) +lin must_VV = mkVV waa_in ; +{-lin want_VV = mkV "" ; ------ diff --git a/src/somali/VerbSom.gf b/src/somali/VerbSom.gf index e8238be48..e8d8bece3 100644 --- a/src/somali/VerbSom.gf +++ b/src/somali/VerbSom.gf @@ -15,10 +15,18 @@ lin ReflVP = ResSom.insertRefl ; -- : VV -> VP -> VP ; - ComplVV vv vp = vp ** { -- check Saeed p. 169 - s = vv.s ; - vComp = vp.vComp ++ vp.s ! VInf ; - pred = NoPred ; + ComplVV vv vp = let vc = vp.vComp in case vv.isVS of { + True => vp ** { + vComp = vc ** {pr = vv.s ! VInf} ; + obj2 = vp.obj2 ** {s = []} ; -- word order hack to avoid more parameters: + miscAdv = vp.miscAdv ++ vp.obj2.s -- dump it all to miscAdv + } ; + + False => vp ** { + s = vv.s ; -- check Saeed p. 169 + vComp = vc ** {pst = vc.pst ++ vp.s ! VInf} ; + pred = NoPred ; + } } ; -- : VS -> S -> VP ; diff --git a/src/somali/unittest/vp.gftest b/src/somali/unittest/vp.gftest index 3425f89d8..77bfa7b0a 100644 --- a/src/somali/unittest/vp.gftest +++ b/src/somali/unittest/vp.gftest @@ -70,6 +70,14 @@ Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplVV LangSom: in uu imanayo waa aynu ogaannay Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron we_Pron) (ComplVS know_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ProgrVP (UseV come_V)))))))) NoVoc +-- LangEng: you must see mother of the cat +LangSom: waa in aad aragtaa bisad BIND da hooya BIND deed +Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youPol_Pron) (ComplVV must_VV (ComplSlash (SlashV2a see_V2) (MassNP (ComplN2 mother_N2 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))) NoVoc + +-- LangEng: the mother of the cat must be seen +LangSom: waa in la arkaa bisad BIND da hooya BIND deed +Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplVV must_VV (ComplSlash (SlashV2a see_V2) (MassNP (ComplN2 mother_N2 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))) NoVoc + -------------------------------------------------------------------------------- -- Adverbials