mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
Hindi VP
This commit is contained in:
@@ -43,9 +43,9 @@ oper
|
||||
mkV = overload {
|
||||
mkV : Str -> V
|
||||
= \s -> regVerb s ** {lock_V = <>} ;
|
||||
mkV : (x1,_,_,_,_,_,_,_,_,_,_,_,_,x14 : Str) -> V
|
||||
= \inf,stem,ims,imp,ifs,ifp,pms,pmp,pfs,pfp,ss1,ss2,sp2,sp3 ->
|
||||
mkVerb inf stem ims imp ifs ifp pms pmp pfs pfp ss1 ss2 sp2 sp3 **
|
||||
mkV : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> V
|
||||
= \inf,stem,ims,imp,ifs,ifp,pms,pmp,pfs,pfp,ss1,ss2,sp2,sp3,r ->
|
||||
mkVerb inf stem ims imp ifs ifp pms pmp pfs pfp ss1 ss2 sp2 sp3 r **
|
||||
{lock_V = <>} ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -57,13 +57,16 @@ resource ResHin = ParamX ** open Prelude in {
|
||||
| VPerf Gender Number
|
||||
| VSubj Number Person
|
||||
| VFut Number Person Gender
|
||||
| VReq
|
||||
| VImp
|
||||
| VReqFut
|
||||
;
|
||||
|
||||
oper
|
||||
Verb = {s : VForm => Str} ;
|
||||
|
||||
mkVerb : (x1,_,_,_,_,_,_,_,_,_,_,_,_,x14 : Str) -> Verb =
|
||||
\inf,stem,ims,imp,ifs,ifp,pms,pmp,pfs,pfp,ss1,ss2,sp2,sp3 -> {
|
||||
mkVerb : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Verb =
|
||||
\inf,stem,ims,imp,ifs,ifp,pms,pmp,pfs,pfp,ss1,ss2,sp2,sp3,r -> {
|
||||
s =
|
||||
let ga : Number -> Gender -> Str = \n,g -> (regAdjective "ga:").s ! g ! n ! Dir
|
||||
in table {
|
||||
@@ -84,7 +87,10 @@ resource ResHin = ParamX ** open Prelude in {
|
||||
VFut Sg P1 g => ss1 + ga Sg g ;
|
||||
VFut Sg _ g => ss2 + ga Sg g ;
|
||||
VFut Pl P2 g => sp2 + ga Pl g ;
|
||||
VFut Pl _ g => sp3 + ga Pl g
|
||||
VFut Pl _ g => sp3 + ga Pl g ;
|
||||
VReq => r ;
|
||||
VImp => stem + "o" ;
|
||||
VReqFut => stem + "iega:"
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -92,7 +98,8 @@ resource ResHin = ParamX ** open Prelude in {
|
||||
(cal + "na:") cal
|
||||
(cal + "ta:") (cal + "te") (cal + "ti:") (cal + "ti:")
|
||||
(cal + "a:") (cal + "e") (cal + "i:") (cal + "i:~")
|
||||
(cal + "u:~") (cal + "e") (cal + "o") (cal + "e~") ;
|
||||
(cal + "u:~") (cal + "e") (cal + "o") (cal + "e~")
|
||||
(cal + "ie") ;
|
||||
|
||||
param
|
||||
CTense = CPresent | CPast | CFuture ;
|
||||
@@ -114,12 +121,11 @@ resource ResHin = ParamX ** open Prelude in {
|
||||
<CFuture, Sg,_ ,Masc> => "hoga:" ;
|
||||
<CFuture, Sg,_ ,Fem > => "hogi:" ;
|
||||
<CFuture, Pl,P2,Masc> => "hoge" ;
|
||||
<CFuture, Pl,P2,Masc> => "hogi:" ;
|
||||
<CFuture, Pl,_ ,Masc> => "ho~ge" ;
|
||||
<CFuture, Pl,P2,Fem > => "hogi:" ;
|
||||
<CFuture, Pl,_ ,Fem > => "ho~gi:"
|
||||
} ;
|
||||
|
||||
|
||||
param
|
||||
PronCase = PCase Case | PObj | PPoss ;
|
||||
oper
|
||||
@@ -133,4 +139,65 @@ resource ResHin = ParamX ** open Prelude in {
|
||||
<P3,Pl> => {s = table PronCase ["ve" ; "un" ; "unhe~" ; "unka:"]}
|
||||
} ;
|
||||
|
||||
-- the Hindi verb phrase
|
||||
|
||||
--- CTense = CPresent | CPast | CFuture ;
|
||||
|
||||
|
||||
|
||||
param
|
||||
VPHTense =
|
||||
VPGenPres -- impf hum nahim "I go"
|
||||
| VPImpPast -- impf Ta nahim "I went"
|
||||
| VPContPres -- stem raha hum nahim "I am going"
|
||||
| VPContPast -- stem raha Ta nahim "I was going"
|
||||
| VPPerf -- perf na/nahim "I went"
|
||||
| VPPerfPres -- perf hum na/nahim "I have gone"
|
||||
| VPPerfPast -- perf Ta na/nahim "I had gone"
|
||||
| VPSubj -- subj na "I may go"
|
||||
| VPFut -- fut na/nahim "I shall go"
|
||||
;
|
||||
|
||||
VPHForm =
|
||||
VPTense VPHTense Number Person Gender -- 9 * 12
|
||||
| VPReq
|
||||
| VPImp
|
||||
| VPReqFut
|
||||
| VPInf
|
||||
| VPStem
|
||||
;
|
||||
|
||||
oper
|
||||
VPH : Type = {
|
||||
s : Bool => VPHForm => {fin, inf, neg : Str} ;
|
||||
obj : Str ;
|
||||
comp : Gender => Number => Str
|
||||
} ;
|
||||
|
||||
mkVPH : Verb -> VPH = \verb -> {
|
||||
s = \\b,vh =>
|
||||
let
|
||||
na = if_then_Str b [] "na" ;
|
||||
nahim = if_then_Str b [] "nahim" ;
|
||||
in
|
||||
case vh of {
|
||||
VPTense VPGenPres n p g =>
|
||||
{fin = copula CPresent n p g ; inf = verb.s ! VImpf g n ; neg = nahim} ;
|
||||
VPTense VPImpPast n p g =>
|
||||
{fin = copula CPast n p g ; inf = verb.s ! VImpf g n ; neg = nahim} ;
|
||||
VPTense VPPerf n _ g =>
|
||||
{fin = verb.s ! VPerf g n ; inf = [] ; neg = nahim} ;
|
||||
VPTense VPPerfPres n p g =>
|
||||
{fin = copula CPresent n p g ; inf = verb.s ! VPerf g n ; neg = nahim} ;
|
||||
VPTense VPPerfPast n p g =>
|
||||
{fin = copula CPast n p g ; inf = verb.s ! VPerf g n ; neg = nahim} ;
|
||||
VPTense VPSubj n p _ => {fin = verb.s ! VSubj n p ; inf = [] ; neg = na} ;
|
||||
VPTense VPFut n p g => {fin = verb.s ! VFut n p g ; inf = [] ; neg = na} ;
|
||||
VPInf => {fin = verb.s ! VStem ; inf = [] ; neg = na} ;
|
||||
_ => {fin = verb.s ! VStem ; inf = [] ; neg = na}
|
||||
} ;
|
||||
obj = [] ;
|
||||
comp = \\_,_ => []
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user