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