mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
(Som) Add verbforms: neg.cond + reduced present for Pl1
This commit is contained in:
@@ -9,7 +9,7 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
||||
|
||||
S = ResSom.Sentence ;
|
||||
QS = SS ;
|
||||
RS = {s : State => Gender => Case => Str} ;
|
||||
RS = {s : State => GenNum => Case => Str} ;
|
||||
-- relative sentence. Tense and polarity fixed,
|
||||
-- but agreement may depend on the CN/NP it modifies.
|
||||
|
||||
|
||||
@@ -44,9 +44,9 @@ lincat
|
||||
[RS] = {s1,s2 : State => Gender => Case => Str} ;
|
||||
|
||||
lin
|
||||
BaseRS = twoTable3 State Gender Case ;
|
||||
ConsRS = consrTable3 State Gender Case comma ;
|
||||
ConjRS = conjunctRSTable State Gender Case ;
|
||||
BaseRS = twoTable3 State GenNum Case ;
|
||||
ConsRS = consrTable3 State GenNum Case comma ;
|
||||
ConjRS = conjunctRSTable ;
|
||||
|
||||
{-
|
||||
lincat
|
||||
@@ -120,7 +120,7 @@ oper
|
||||
s = \\c => co.s1 ++ xs.s1 ! Abs ++ co.s2 ! xs.st ++ xs.s2 ! c
|
||||
}) ;
|
||||
|
||||
conjunctRSTable : ConjDistr -> {s1,s2 : State => Gender => Case => Str} -> RS = \co,xs -> lin RS (xs ** {
|
||||
conjunctRSTable : ConjDistr -> {s1,s2 : State => GenNum => Case => Str} -> RS = \co,xs -> lin RS (xs ** {
|
||||
s = \\st,g,c => co.s1
|
||||
++ xs.s1 ! st ! g ! c
|
||||
++ co.s2 ! st
|
||||
|
||||
@@ -83,7 +83,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
which RS are restrictive and which appositive, as it is semantic.
|
||||
-}
|
||||
RelNP np rs = np ** {
|
||||
s = \\c => objpron np ! c ++ "oo" ++ rs.s ! Indefinite ! npgender np ! c ;
|
||||
s = \\c => objpron np ! c ++ "oo" ++ rs.s ! Indefinite ! npgennum np ! c ;
|
||||
isPron = False ;
|
||||
} ;
|
||||
|
||||
@@ -245,7 +245,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
mod = \\st,n,c => --what to do with subject case if there's both adj and RS?
|
||||
cn.mod ! st ! n ! Abs
|
||||
++ andConj st cn.hasMod
|
||||
++ rs.s ! st ! gender cn ! c ;
|
||||
++ rs.s ! st ! gennum cn n ! c ;
|
||||
hasMod = True ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -188,8 +188,17 @@ oper
|
||||
|
||||
gender : {gda : GenderDefArt} -> Gender = \n ->
|
||||
case n.gda of {FM _ _ => Fem ; _ => Masc} ;
|
||||
npgender : {a : Agreement} -> Gender = \n ->
|
||||
case n.a of {Sg3 Fem => Fem ; _ => Masc} ;
|
||||
|
||||
gennum : {gda : GenderDefArt} -> Number -> GenNum = \gda,n ->
|
||||
case n of {Pl => PlInv ; Sg =>
|
||||
case gda.gda of {FM _ _ => SgFem ; _ => SgMasc}
|
||||
} ;
|
||||
|
||||
npgennum : {a : Agreement} -> GenNum = \n ->
|
||||
case n.a of {
|
||||
Sg2|Sg3 Fem => SgFem ;
|
||||
Sg1|Sg3 Masc => SgMasc ;
|
||||
_ => PlInv } ;
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Numerals
|
||||
@@ -272,12 +281,12 @@ param
|
||||
| VNegPast Aspect
|
||||
| VPast Aspect VAgr
|
||||
| VImp Number Polarity
|
||||
-- | VRelShort -- "som är/har/…" TODO is this used in other verbs?
|
||||
| VRel Gender ; {- Sayeed p. 95-96 + ch 8
|
||||
Reduced present general in relative clauses; as absolutive
|
||||
1/2SG/3SG M/2PL/3PL sugá (VRel Masc)
|
||||
3 SG F sugtá (VRel Fem)
|
||||
1PL sugná -- not yet in the grammar -}
|
||||
| VRel GenNum {- Sayeed p. 95-96 + ch 8
|
||||
Reduced present general in relative clauses; as absolutive
|
||||
1/2SG/3SG M/2PL/3PL suga (VRel MascSg)
|
||||
3 SG F sugta (VRel FemSg)
|
||||
1PL sugna (VRel PlInv) -}
|
||||
| VNegCond GenNum ;
|
||||
|
||||
VAgr =
|
||||
Sg1_Sg3Masc
|
||||
|
||||
@@ -13,11 +13,11 @@ lin
|
||||
These forms are found in VRel in VP, and aren't chosen by predVP, so we put
|
||||
them in manually in RelVP.
|
||||
-}
|
||||
RelVP rp vp = {s = \\g,c,t,a,p =>
|
||||
RelVP rp vp = {s = \\gn,c,t,a,p =>
|
||||
let cls = predVPSlash impersNP vp ;
|
||||
rclSubord = mergeRCl (cls.s ! True) ;
|
||||
rclStatement = mergeRCl (cls.s ! False) ;
|
||||
in rp.s ++ case <g,c,t,a,p> of {
|
||||
in rp.s ++ case <gn,c,t,a,p> of {
|
||||
<g,Abs,Pres,Simul,Pos> => linVP (VRel g) vp ; -- reduced present only in absolutive
|
||||
<_,Nom,Pres,Simul,Pos> => rclStatement.s ! t ! a ! p ; -- the usual forms, not subordinate
|
||||
_ => rclSubord.s ! t ! a ! p } -- the rest is Subord because of negation.
|
||||
|
||||
@@ -521,7 +521,7 @@ oper
|
||||
VPres Progressive Pl3_ pol => progr + "aan" ;
|
||||
|
||||
VPast Simple Sg1_Sg3Masc
|
||||
=> qaat + ay ;
|
||||
=> qaat + ay ;
|
||||
VPast Simple Sg2_Sg3Fem => arag + t + ay ; -- t, d or s
|
||||
VPast Simple Pl1_ => arag + n + ay ;
|
||||
VPast Simple Pl2_ => arag + t + "een" ; -- t, d or s
|
||||
@@ -537,6 +537,10 @@ oper
|
||||
VNegPast Simple => arkin ;
|
||||
VNegPast Progressive => progr + "n" ;
|
||||
|
||||
-- TODO check conjugations 2 and 3
|
||||
VNegCond PlInv => arag + n + "een" ;
|
||||
VNegCond SgMasc => qaat + "een" ; -- for most verbs same as VPast Simple Pl3_
|
||||
VNegCond SgFem => arag + t + "een" ; -- for most verbs same as VPast Simple Pl2_
|
||||
|
||||
VImp Sg Pos => arag ;
|
||||
VImp Pl Pos => qaat + "a" ;
|
||||
@@ -544,9 +548,11 @@ oper
|
||||
VImp Pl Neg => qaat + "ina" ;
|
||||
|
||||
VInf => arki ;
|
||||
-- VRelShort => arki ; -- TODO does this exist?
|
||||
VRel Masc => qaat + "a" ;
|
||||
VRel Fem => arag + t + "a" } ;
|
||||
VRel SgMasc => qaat + "a" ;
|
||||
VRel SgFem => arag + t + "a" ;
|
||||
VRel PlInv => arag + "na"
|
||||
|
||||
} ;
|
||||
sii, dhex = [] ;
|
||||
} ;
|
||||
|
||||
@@ -609,6 +615,9 @@ oper
|
||||
VPast _ Pl2_ => "ahaydeen" ;
|
||||
VPast _ Pl3_ => "ahaayeen" ;
|
||||
VNegPast _ => "ahi" ;
|
||||
VNegCond SgMasc => "ahaadeen" ; -- 1SG/3 SG M/3PL
|
||||
VNegCond SgFem => "ahaateen" ; -- 2SG/3 SG F/2PL
|
||||
VNegCond PlInv => "ahaanneen" ; -- 1PL
|
||||
--VRelShort => "ah" ;
|
||||
VRel _ => "ah" ; -- TODO find right forms
|
||||
VInf => "ahaan" ;
|
||||
@@ -627,7 +636,8 @@ oper
|
||||
VPres _ Pl1_ Pos => "leenahay" ;
|
||||
VPres _ Pl2_ Pos => "leedihiin" ;
|
||||
VPres _ Pl3_ Pos => "leeyihiin" ;
|
||||
VPast asp agr => "l" + copula.s ! VPast asp agr ;
|
||||
VPast asp agr => "l" + copula.s ! VPast asp agr ;
|
||||
VNegCond agr => "l" + copula.s ! VNegCond agr ;
|
||||
-- VRelShort => "leh" ;
|
||||
VRel _ => "leh" ; -- TODO find right forms
|
||||
x => hold_V.s ! x }
|
||||
@@ -764,7 +774,7 @@ oper
|
||||
Clause : Type = {s : ClType => Tense => Anteriority => Polarity => BaseCl} ;
|
||||
ClSlash : Type = {s : Bool {-is subordinate-} => Tense => Anteriority => Polarity => BaseCl} ;
|
||||
Sentence : Type = {s : Bool {-is subordinate-} => BaseCl} ;
|
||||
RClause : Type = {s : Gender => Case => Tense => Anteriority => Polarity => Str} ;
|
||||
RClause : Type = {s : GenNum => Case => Tense => Anteriority => Polarity => Str} ;
|
||||
QClause : Type = {s : Tense => Anteriority => Polarity => Str} ;
|
||||
|
||||
mergeQCl : (Tense => Anteriority => Polarity => BaseCl) -> QClause = mergeSTM True ;
|
||||
@@ -847,15 +857,15 @@ oper
|
||||
Subord => vfSubord ; _ => vfStatement } ;
|
||||
|
||||
vfStatement : VFun = \t,ant,p,agr,vp ->
|
||||
case <t,ant> of {
|
||||
case <t,ant,p> of {
|
||||
<Cond,_,Pos> => {fin = pastV have_V ; inf = vp.s ! VInf} ;
|
||||
<Cond,_,Neg> => {fin = condNegV vp ; inf = []} ;
|
||||
<Pres,Simul> => {fin = presV vp ; inf = [] } ;
|
||||
<Past,Simul> => {fin = pastV vp ; inf = [] } ;
|
||||
<Pres,Anter> => {fin = presCopula ! agrPol ; inf = vp.s ! VInf } ; ---- just guessing
|
||||
<Past,Anter> => {fin = pastV (cSug "jir") ; inf = vp.s ! VInf} ;
|
||||
<Fut,Simul> => {fin = presV (cSug "doon") ; inf = vp.s ! VInf} ;
|
||||
<Fut,Anter> => {fin = pastV (cSug "doon") ; inf = vp.s ! VInf} ;
|
||||
<Cond,Simul> => {fin = pastV have_V ; inf = vp.s ! VInf} ; -- TODO check
|
||||
<Cond,Anter> => {fin = pastV have_V ; inf = vp.s ! VInf} -- TODO check
|
||||
<Fut,Anter> => {fin = pastV (cSug "doon") ; inf = vp.s ! VInf}
|
||||
}
|
||||
where {
|
||||
agrPol : {agr:Agreement ; pol:Polarity} = {agr=agr; pol=p} ;
|
||||
@@ -864,7 +874,14 @@ oper
|
||||
Pos => v.s ! VPast Simple (agr2vagr agr) } ;
|
||||
|
||||
presV : Verb -> Str = \v -> v.s ! VPres Simple (agr2vagr agr) p ;
|
||||
} ;
|
||||
|
||||
condNegV : Verb -> Str = \v -> case agr of {
|
||||
Sg2|Sg3 Fem
|
||||
|Pl2 => v.s ! VNegCond SgFem ;
|
||||
Pl1 _ => v.s ! VNegCond PlInv ;
|
||||
_ => v.s ! VNegCond SgMasc --Sg1|Sg3 Masc|Pl3|Impers
|
||||
}
|
||||
} ;
|
||||
|
||||
vfSubord : VFun = \t,ant,p,agr,vp ->
|
||||
case <t,ant,p> of {
|
||||
|
||||
Reference in New Issue
Block a user