mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-12 12:42:50 -06:00
refinementNepali-11-06-20
This commit is contained in:
@@ -6,28 +6,96 @@ resource ParadigmsNep = open
|
||||
Predef,
|
||||
Prelude,
|
||||
MorphoNep,
|
||||
CatNep
|
||||
CatNep,
|
||||
ResNep
|
||||
in {
|
||||
|
||||
--2 Parameters
|
||||
|
||||
oper
|
||||
masculine : Gender ;
|
||||
feminine : Gender ;
|
||||
singular : Number;
|
||||
plural : Number;
|
||||
masculine : Gender ;
|
||||
feminine : Gender ;
|
||||
singular : Number ;
|
||||
plural : Number ;
|
||||
human : NType ;
|
||||
profession : NType ;
|
||||
living : NType ;
|
||||
|
||||
singular = Sg ; plural = Pl;
|
||||
|
||||
masculine = Masc ; feminine = Fem ;
|
||||
human = Living ; profession = Living ; living = Living ;
|
||||
|
||||
--2 Nouns
|
||||
regN : Str -> N = \s -> mkNReg s ** {lock_N= <>} ;
|
||||
mkNF : Str -> N = \s -> mkNFem s ** {lock_N= <>} ;
|
||||
mkNUC : Str -> Gender -> N = \s,g -> mkNUnc s g ** {lock_N= <>} ;
|
||||
-- For regular nouns takes Masc as default gender
|
||||
regN = overload {
|
||||
-- If no parameter is passed noun will take
|
||||
-- Animacy : Nonliving, Honor : 3rd person Low grade honorific
|
||||
regN : Str -> N = \s -> mkNReg s NonLiving Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
-- Animacy : Nonliving by default, Honor : explicitely given,
|
||||
regN : Str -> NPerson -> N = \s,h -> mkNReg s NonLiving h ** {lock_N= <>} ;
|
||||
|
||||
-- Animacy : explicitely given, Honor : 3rd person Low grade honorific by default
|
||||
regN : Str -> NType -> N = \s,t -> mkNReg s t Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
-- Animacy, Honor both exlicutely given
|
||||
regN : Str -> NType -> NPerson -> N = \s,t,h -> mkNReg s t h ** {lock_N= <>} ;
|
||||
|
||||
} ;
|
||||
|
||||
-- For femenine nouns
|
||||
mkNF = overload {
|
||||
mkNF : Str -> N = \s -> mkNFem s NonLiving Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
mkNF : Str -> NPerson -> N = \s,h -> mkNFem s NonLiving h ** {lock_N= <>} ;
|
||||
|
||||
mkNF : Str -> NType -> N = \s,t -> mkNFem s t Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
mkNF : Str -> NType -> NPerson -> N = \s,t,h -> mkNFem s t h ** {lock_N= <>} ;
|
||||
} ;
|
||||
|
||||
-- For uncountable nouns, could be both Masc or Fem Gender
|
||||
mkNUC = overload {
|
||||
mkNUC : Str -> N =
|
||||
\s -> mkNUnc s Masc NonLiving Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
mkNUC : Str -> Gender -> N =
|
||||
\s,g -> mkNUnc s g NonLiving Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
mkNUC : Str -> Gender -> NType -> N =
|
||||
\s,g,t -> mkNUnc s g t Pers3_L ** {lock_N= <>} ;
|
||||
|
||||
mkNUC : Str -> Gender -> NType -> NPerson -> N =
|
||||
\s,g,t,h -> mkNUnc s g t h ** {lock_N= <>} ;
|
||||
} ;
|
||||
--mkNUC : Str -> NType -> Gender -> N = \s,t,g -> mkNUnc s g t ** {lock_N= <>} ;
|
||||
|
||||
{-
|
||||
mkN2 = overload {
|
||||
mkN2 : N -> Prep -> Str -> N2 =
|
||||
\n,p,c -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c.s } ;
|
||||
|
||||
mkN2 : N -> Prep -> Str -> NType -> N2 =
|
||||
\n,p,c,t -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c } ;
|
||||
|
||||
mkN2 : N -> Prep -> Str -> NType -> NPerson -> N2 =
|
||||
\n,p,c,t,h -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c} ;
|
||||
} ;
|
||||
-}
|
||||
|
||||
mkN2 : N -> Prep -> Str -> N2;
|
||||
mkN2 = \n,p,c -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c } ;
|
||||
mkN2 = \n,p,c -> n ** {lock_N2 = <> ; c2 = p.s ; c3 = c} ;
|
||||
|
||||
{-
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> Prep -> Prep -> Str-> N3 =
|
||||
\n,p,q,r -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s ; c4 = r} ;
|
||||
|
||||
mkN3 : N -> Prep -> Prep -> Str-> NType -> N3 =
|
||||
\n,p,q,r,t -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s ; c4 = r} ;
|
||||
} ;
|
||||
-}
|
||||
|
||||
mkN3 : N -> Prep -> Prep -> Str-> N3 ;
|
||||
mkN3 = \n,p,q,r -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s ; c4 = r} ;
|
||||
@@ -35,16 +103,19 @@ oper
|
||||
-- Compound Nouns
|
||||
|
||||
mkCmpdNoun : Str -> N -> N
|
||||
= \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; lock_N = <>};
|
||||
= \s,noun -> {s =\\n,c => s ++ noun.s ! n ! c ; g = noun.g ; t = noun.t ; h = noun.h ; lock_N = <>};
|
||||
|
||||
|
||||
-- Proper names
|
||||
mkPN = overload {
|
||||
mkPN : Str -> PN =
|
||||
\s -> let n = regN1 s Masc in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ;
|
||||
mkPN : Str -> PN =
|
||||
\s -> let n = regN1 s Masc NonLiving Pers2_M in {s = n.s ! Sg ; g = n.g ; t = n.t ; h = n.h ; lock_PN = <>} ;
|
||||
|
||||
mkPN : Str -> Gender -> PN =
|
||||
\s, g -> let n = regN1 s g in {s = n.s ! Sg ; g = n.g ; lock_PN = <>} ;
|
||||
mkPN : Str -> Gender -> NPerson -> PN =
|
||||
\s,g,h -> let n = regN1 s g NonLiving h in {s = n.s ! Sg ; g = n.g ; t = n.t ; h = n.h ; lock_PN = <>} ;
|
||||
|
||||
mkPN : Str -> Gender -> NType -> NPerson -> PN =
|
||||
\s,g,t,h -> let n = regN1 s g t h in {s = n.s ! Sg ; g = n.g ; t = n.t ; h = n.h ; lock_PN = <>} ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -67,15 +138,19 @@ oper
|
||||
-- Determiner
|
||||
mkDet = overload {
|
||||
mkDet : (s1,s2:Str) -> Number -> Det =
|
||||
\s1,s2,nb -> let dt = makeDet s1 s1 s2 s2 nb in {s = dt.s ; n = nb ; lock_Det = <>};
|
||||
\s1,s2,nb -> let dt = makeDet s1 s1 s2 s2 nb in {s = dt.s ; n = nb ; lock_Det = <>} ;
|
||||
|
||||
mkDet : (s1,s2,s3,s4:Str) -> Number -> Det =
|
||||
\s1,s2,s3,s4,nb -> let dt = makeDet s1 s2 s3 s4 nb in {s = dt.s ; n = nb ; lock_Det = <>};
|
||||
\s1,s2,s3,s4,nb -> let dt = makeDet s1 s2 s3 s4 nb in {s = dt.s ; n = nb ; lock_Det = <>} ;
|
||||
} ;
|
||||
|
||||
-- IDet
|
||||
mkIDetn : (s1,s2:Str) -> Number -> IDet =
|
||||
\s1,s2,nb -> let dt = makeIDet s1 s2 in {s = dt.s ; n = nb ; lock_IDet = <>} ;
|
||||
|
||||
-- Intergative pronouns
|
||||
mkIP : (x1,x2,x3,x4:Str) -> Number -> IP =
|
||||
\s1,s2,s3,s4,n -> let p = mkIntPronForm s1 s2 s3 s4 in { s = p.s ; n = n ; lock_IP = <>};
|
||||
\s1,s2,s3,s4,n -> let p = mkIntPronForm s1 s2 s3 s4 in { s = p.s ; n = n ; lock_IP = <>} ;
|
||||
|
||||
|
||||
--2 Adjectives
|
||||
@@ -89,8 +164,8 @@ oper
|
||||
|
||||
--2 Verbs
|
||||
|
||||
mkV : Str -> V
|
||||
= \s -> mkVerb s ** {lock_V = <>} ;
|
||||
mkV : Str -> V =
|
||||
\s -> mkVerb s ** {lock_V = <>} ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : Str -> V2
|
||||
@@ -150,15 +225,11 @@ oper
|
||||
\sm,sf,pm,pf -> {s = (makeQuant sm sf pm pf).s ; lock_Quant = <>};
|
||||
|
||||
mkQuant : (s1,s2:Str) -> Quant =
|
||||
\sg,pl -> {s = (makeQuant sg sg pl pl).s ; lock_Quant = <>};
|
||||
\sg,pl -> {s = (makeQuant sg sg pl pl).s ; lock_Quant = <>} ;
|
||||
} ;
|
||||
|
||||
{-
|
||||
-- mkQuant = overload {
|
||||
-- mkQuant : Pron -> Quant = \p -> {s = \\_,_,c => p.s!c ;a = p.a ; lock_Quant = <>};
|
||||
-- mkQuant : (no_sg, no_pl, none_sg, non_pl : Str) -> Quant = mkQuantifier;
|
||||
-- } ;
|
||||
|
||||
{-
|
||||
--2 Conjunctions
|
||||
mkConj : overload {
|
||||
mkConj : Str -> Conj ; -- and (plural agreement)
|
||||
@@ -175,48 +246,5 @@ oper
|
||||
|
||||
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||
lin Conj (sd2 x y ** {n = n}) ;
|
||||
|
||||
-- mkV0 : V -> V0 ;
|
||||
-- mkVS : V -> VS ;
|
||||
-- mkV2S : V -> Prep -> V2S ;
|
||||
mkVV : V -> VV = \v -> lin VV (v ** {isAux = False});
|
||||
|
||||
|
||||
-- mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
-- mkVA : V -> VA ;
|
||||
-- mkV2A : V -> Prep -> V2A ;
|
||||
-- mkVQ : V -> VQ ;
|
||||
-- mkV2Q : V -> Prep -> V2Q ;
|
||||
--
|
||||
-- mkAS : A -> AS ;
|
||||
-- mkA2S : A -> Prep -> A2S ;
|
||||
-- mkAV : A -> AV ;
|
||||
-- mkA2V : A -> Prep -> A2V ;
|
||||
-- mkA2V a p = a ** {c2 = p.s } ;
|
||||
--
|
||||
---- Notice: Categories $V0, AS, A2S, AV, A2V$ are just $A$.
|
||||
---- $V0$ is just $V$; the second argument is treated as adverb.
|
||||
--
|
||||
-- V0 : Type ;
|
||||
-- AS, A2S, AV, A2V : Type ;
|
||||
|
||||
--
|
||||
----.
|
||||
----2 Definitions of paradigms
|
||||
----
|
||||
---- The definitions should not bother the user of the API. So they are
|
||||
---- hidden from the document.
|
||||
--
|
||||
-- Gender = MorphoHin.Gender ;
|
||||
-- Number = MorphoHin.Number ;
|
||||
-- Case = MorphoHin.Case ;
|
||||
-- human = Masc ;
|
||||
-- nonhuman = Neutr ;
|
||||
-- masculine = Masc ;
|
||||
-- feminine = Fem ;
|
||||
-- singular = Sg ;
|
||||
-- plural = Pl ;
|
||||
-- nominative = Nom ;
|
||||
-- genitive = Gen ;
|
||||
-}
|
||||
-}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user