diff --git a/src/somali/QuestionSom.gf b/src/somali/QuestionSom.gf index 0bacd6456..584fd7725 100644 --- a/src/somali/QuestionSom.gf +++ b/src/somali/QuestionSom.gf @@ -6,7 +6,7 @@ concrete QuestionSom of Question = CatSom ** open lin -- : Cl -> QCl ; - QuestCl cl = mergeSTM (cl.s ! Question) ; + QuestCl cl = mergeQCl (cl.s ! Question) ; -- : IP -> VP -> QCl ; -- QuestVP ip vp = ; diff --git a/src/somali/RelativeSom.gf b/src/somali/RelativeSom.gf index ea5fc0e92..7aada0f7a 100644 --- a/src/somali/RelativeSom.gf +++ b/src/somali/RelativeSom.gf @@ -21,7 +21,7 @@ books-the men-the bring 'the books which the men bring' -- : RP -> VP -> RCl ; RelVP rp vp = {s = \\g,c,t,a,p => let cls = predVPSlash impersNP vp ; - rcl = mergeSTM (cls.s ! False) ; -- Other than present tense, just use normal verb forms + rcl = mergeRCl (cls.s ! False) ; -- Other than present tense, just use normal verb forms in rp.s ++ case of { => linVP (VRel Fem) vp ; => linVP (VRel Masc) vp ; @@ -30,7 +30,7 @@ books-the men-the bring 'the books which the men bring' -- : RP -> ClSlash -> RCl ; -- whom John loves RelSlash rp cls = - let rcl = mergeSTM (cls.s ! True) + let rcl = mergeSTM True (cls.s ! True) -- in subordinate clause, STM is not included but subject pronoun is in rcl ** {s = \\g,c,t,a,p => rp.s ++ rcl.s ! t ! a ! p} ; diff --git a/src/somali/ResSom.gf b/src/somali/ResSom.gf index 9239248f0..a4cf64052 100644 --- a/src/somali/ResSom.gf +++ b/src/somali/ResSom.gf @@ -666,7 +666,6 @@ oper obj2 : NPLite ; -- {s : Str ; a : PrepAgr} secObj : Str ; -- if two overt pronoun objects vComp : Str ; -- VV complement --- refl : Str ; -- reflexive is put here, if the verb has an obj2. miscAdv : Str ; -- dump for any other kind of adverb, that isn't } ; -- in a closed class of particles or made with PrepNP. @@ -760,8 +759,14 @@ oper RClause : Type = {s : Gender => Case => Tense => Anteriority => Polarity => Str} ; QClause : Type = {s : Tense => Anteriority => Polarity => Str} ; - mergeSTM : (Tense => Anteriority => Polarity => BaseCl) -> QClause = \b -> - {s = \\t,a,p => (b ! t ! a ! p).beforeSTM ++ (b ! t ! a ! p).afterSTM} ; + mergeQCl : (Tense => Anteriority => Polarity => BaseCl) -> QClause = mergeSTM True ; + mergeRCl : (Tense => Anteriority => Polarity => BaseCl) -> QClause = mergeSTM False ; + + mergeSTM : Bool -> (Tense => Anteriority => Polarity => BaseCl) -> QClause = \includeSTM,b -> + {s = \\t,a,p => (b ! t ! a ! p).beforeSTM + ++ if_then_Str includeSTM (b ! t ! a ! p).stm [] + ++ (b ! t ! a ! p).afterSTM + } ; predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps -> let cl = predVP np vps in {s = table {