forked from GitHub/gf-rgl
change lincat PN to make it similar to LN and avoid storing rt and rel
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
|
||||
flags coding=utf8 ; optimize=all ;
|
||||
lincat
|
||||
N, PN = ResRus.NounForms ;
|
||||
N = ResRus.NounForms ;
|
||||
PN = {
|
||||
s : Case => Str ;
|
||||
g : Gender ;
|
||||
anim : Animacy ;
|
||||
n : Number ;
|
||||
} ;
|
||||
GN = {
|
||||
s : Case => Str ;
|
||||
g : Sex ;
|
||||
@@ -119,8 +125,7 @@ lincat
|
||||
|
||||
linref
|
||||
N = \s -> s.snom ;
|
||||
PN = \s -> s.snom ;
|
||||
LN = \s -> s.s ! Nom ;
|
||||
PN,LN = \s -> s.s ! Nom ;
|
||||
Pron = \s -> s.nom ;
|
||||
N2 = \s -> s.snom ++ s.c2.s ;
|
||||
N3 = \s -> s.snom ++ s.c2.s ++ s.c3.s ;
|
||||
|
||||
@@ -173,9 +173,9 @@ lin
|
||||
monthN month = month ;
|
||||
|
||||
-- : Weekday -> PN ; -- Monday (is free)
|
||||
weekdayPN wd = wd ;
|
||||
weekdayPN wd = {s = (nounFormsNoun wd).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
-- : Month -> PN ; -- March (is cold)
|
||||
monthPN month = month ;
|
||||
monthPN month = {s = (nounFormsNoun month).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
|
||||
-- : Card -> CN -> A -> AP ; -- x inches long
|
||||
n_units_AP card cn a =
|
||||
|
||||
@@ -46,15 +46,14 @@ lin
|
||||
Neut => "(ср.р.)"
|
||||
}) ;
|
||||
s2 = frameTable (
|
||||
tr (th (heading nominative_Parameter) ++ td (pn.snom)) ++
|
||||
tr (th (heading genitive_Parameter) ++ td (pn.sgen)) ++
|
||||
tr (th (heading dative_Parameter) ++ td (pn.sdat)) ++
|
||||
tr (th (heading accusative_Parameter) ++ td (pn.sacc)) ++
|
||||
tr (th ("творительный") ++ td (pn.sins)) ++
|
||||
tr (th ("предложный") ++ td (pn.sprep)) ++
|
||||
tr (th (heading partitive_Parameter) ++ td (pn.sptv)) ++
|
||||
tr (th ("местный") ++ td (pn.sloc)) ++
|
||||
tr (th ("звательный") ++ td (pn.svoc))
|
||||
tr (th (heading nominative_Parameter) ++ td (pn.s!Nom)) ++
|
||||
tr (th (heading genitive_Parameter) ++ td (pn.s!Gen)) ++
|
||||
tr (th (heading dative_Parameter) ++ td (pn.s!Dat)) ++
|
||||
tr (th (heading accusative_Parameter) ++ td (pn.s!Acc)) ++
|
||||
tr (th ("творительный") ++ td (pn.s!Ins)) ++
|
||||
tr (th ("предложный") ++ td (pn.s!Pre)) ++
|
||||
tr (th (heading partitive_Parameter) ++ td (pn.s!Ptv)) ++
|
||||
tr (th ("местный") ++ td (pn.s!Loc))
|
||||
) ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@ lin
|
||||
|
||||
-- : PN -> NP ; -- John
|
||||
UsePN pn = {
|
||||
s=\\cas => (nounFormsNoun pn).s ! Sg ! cas ;
|
||||
s=pn.s ;
|
||||
pron=False;
|
||||
a=Ag (gennum pn.g Sg) P3
|
||||
a=Ag (gennum pn.g pn.n) P3
|
||||
} ; -- Does NP need animacy?
|
||||
|
||||
-- : Pron -> NP ;
|
||||
|
||||
@@ -396,36 +396,27 @@ oper
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : N -> PN
|
||||
= \n -> lin PN n ;
|
||||
= \n -> lin PN {s = (nounFormsNoun n).s ! Sg; g=n.g; anim=n.anim; n=Sg} ;
|
||||
mkPN : N -> Str -> N -> PN
|
||||
= \n1,link,n2 -> lin PN (mkCompoundN n1 link n2) ;
|
||||
= \n1,link,n2 -> lin PN {s = (nounFormsNoun (mkCompoundN n1 link n2)).s ! Sg; g=n1.g; anim=n1.anim; n=Sg} ;
|
||||
mkPN : Str -> PN
|
||||
= \nom -> lin PN (guessNounForms nom (guessAdjectiveForms nonExist) GenType) ;
|
||||
= \nom -> let n = guessNounForms nom (guessAdjectiveForms nonExist) GenType
|
||||
in lin PN {s = (nounFormsNoun n).s ! Sg; g=n.g; anim=n.anim; n=Sg} ;
|
||||
mkPN : Str -> Gender -> Animacy -> PN
|
||||
= \nom, g, anim -> lin PN (guessLessNounForms nom g anim (guessAdjectiveForms nonExist) GenType) ;
|
||||
= \nom, g, anim -> let n = guessLessNounForms nom g anim (guessAdjectiveForms nonExist) GenType
|
||||
in lin PN {s = (nounFormsNoun n).s ! Sg; g=n.g; anim=n.anim; n=Sg} ;
|
||||
mkPN : Str -> Gender -> Number -> Animacy -> PN
|
||||
= \nom, g, n, anim -> lin PN (guessLessNounForms nom g anim (guessAdjectiveForms nonExist) GenType) ;
|
||||
= \nom, g, num, anim -> let n = guessLessNounForms nom g anim (guessAdjectiveForms nonExist) GenType
|
||||
in lin PN {s = (nounFormsNoun n).s ! num; g=g; anim=anim; n=num} ;
|
||||
mkPN : Str -> Gender -> Animacy -> Z.ZNIndex -> PN
|
||||
= \word, g, anim, z -> lin PN (noMinorCases (Z.makeNoun word g anim (guessAdjectiveForms nonExist) GenType z)) ;
|
||||
= \word, g, anim, z -> let n = noMinorCases (Z.makeNoun word g anim (guessAdjectiveForms nonExist) GenType z)
|
||||
in lin PN {s = (nounFormsNoun n).s ! Sg; g=g; anim=anim; n=Sg} ;
|
||||
mkPN : Str -> Gender -> Animacy -> Str -> PN
|
||||
= \word, g, anim, zi -> lin PN (noMinorCases (Z.makeNoun word g anim (guessAdjectiveForms nonExist) GenType (Z.parseIndex zi))) ;
|
||||
= \word, g, anim, zi -> let n = noMinorCases (Z.makeNoun word g anim (guessAdjectiveForms nonExist) GenType (Z.parseIndex zi))
|
||||
in lin PN {s = (nounFormsNoun n).s ! Sg; g=g; anim=anim; n=Sg} ;
|
||||
mkPN : A -> PN -> PN
|
||||
= \a, pn -> pn ** {
|
||||
snom = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Nom ++ pn.snom ;
|
||||
sgen = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Gen ++ pn.sgen ;
|
||||
sdat = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Dat ++ pn.sdat ;
|
||||
sacc = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Acc ++ pn.sacc ;
|
||||
sins = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Ins ++ pn.sins ;
|
||||
sprep = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Loc ++ pn.sprep ;
|
||||
sloc = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Loc ++ pn.sloc ;
|
||||
sptv = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Gen ++ pn.sptv ;
|
||||
svoc = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Nom ++ pn.svoc ;
|
||||
pnom = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Nom ++ pn.pnom ;
|
||||
pgen = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Gen ++ pn.pgen ;
|
||||
pdat = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Dat ++ pn.pdat ;
|
||||
pacc = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Acc ++ pn.pacc ;
|
||||
pins = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Ins ++ pn.pins ;
|
||||
pprep = (adjFormsAdjective a).s ! (gennum pn.g Pl) ! pn.anim ! Loc ++ pn.pprep ;
|
||||
s = \\c => (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! c ++ pn.s ! c
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -5,14 +5,14 @@ flags coding=utf8;
|
||||
|
||||
lin
|
||||
-- : Symb -> PN ; -- x
|
||||
SymbPN i = (immutableNounForms i.s Neut Inanimate) ** {g = Neut; a = Inanimate} ;
|
||||
SymbPN i = {s = (nounFormsNoun (immutableNounForms i.s Neut Inanimate)).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
|
||||
-- : Int -> PN ; -- 27
|
||||
IntPN i = (immutableNounForms i.s Neut Inanimate) ** {g = Neut; a = Inanimate} ;
|
||||
IntPN i = {s = (nounFormsNoun (immutableNounForms i.s Neut Inanimate)).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
-- : Float -> PN ; -- 3.14159
|
||||
FloatPN i = (immutableNounForms i.s Neut Inanimate) ** {g = Neut; a = Inanimate} ;
|
||||
FloatPN i = {s = (nounFormsNoun (immutableNounForms i.s Neut Inanimate)).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
-- : Card -> PN ; -- twelve [as proper name] -- TODO: implement properly
|
||||
NumPN card = (immutableNounForms (card.s ! Neut ! Inanimate ! Nom) Neut Inanimate) ** {g = Neut; a = Inanimate} ;
|
||||
NumPN card = {s = (nounFormsNoun (immutableNounForms (card.s ! Neut ! Inanimate ! Nom) Neut Inanimate)).s ! Sg; g = Neut; anim = Inanimate; n=Sg} ;
|
||||
|
||||
-- : CN -> Card -> NP ; -- level five ; level 5
|
||||
CNNumNP cn card = {
|
||||
|
||||
Reference in New Issue
Block a user