mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
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 {
|
concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
|
||||||
flags coding=utf8 ; optimize=all ;
|
flags coding=utf8 ; optimize=all ;
|
||||||
lincat
|
lincat
|
||||||
N, PN = ResRus.NounForms ;
|
N = ResRus.NounForms ;
|
||||||
|
PN = {
|
||||||
|
s : Case => Str ;
|
||||||
|
g : Gender ;
|
||||||
|
anim : Animacy ;
|
||||||
|
n : Number ;
|
||||||
|
} ;
|
||||||
GN = {
|
GN = {
|
||||||
s : Case => Str ;
|
s : Case => Str ;
|
||||||
g : Sex ;
|
g : Sex ;
|
||||||
@@ -119,8 +125,7 @@ lincat
|
|||||||
|
|
||||||
linref
|
linref
|
||||||
N = \s -> s.snom ;
|
N = \s -> s.snom ;
|
||||||
PN = \s -> s.snom ;
|
PN,LN = \s -> s.s ! Nom ;
|
||||||
LN = \s -> s.s ! Nom ;
|
|
||||||
Pron = \s -> s.nom ;
|
Pron = \s -> s.nom ;
|
||||||
N2 = \s -> s.snom ++ s.c2.s ;
|
N2 = \s -> s.snom ++ s.c2.s ;
|
||||||
N3 = \s -> s.snom ++ s.c2.s ++ s.c3.s ;
|
N3 = \s -> s.snom ++ s.c2.s ++ s.c3.s ;
|
||||||
|
|||||||
@@ -173,9 +173,9 @@ lin
|
|||||||
monthN month = month ;
|
monthN month = month ;
|
||||||
|
|
||||||
-- : Weekday -> PN ; -- Monday (is free)
|
-- : 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)
|
-- : 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
|
-- : Card -> CN -> A -> AP ; -- x inches long
|
||||||
n_units_AP card cn a =
|
n_units_AP card cn a =
|
||||||
|
|||||||
@@ -46,15 +46,14 @@ lin
|
|||||||
Neut => "(ср.р.)"
|
Neut => "(ср.р.)"
|
||||||
}) ;
|
}) ;
|
||||||
s2 = frameTable (
|
s2 = frameTable (
|
||||||
tr (th (heading nominative_Parameter) ++ td (pn.snom)) ++
|
tr (th (heading nominative_Parameter) ++ td (pn.s!Nom)) ++
|
||||||
tr (th (heading genitive_Parameter) ++ td (pn.sgen)) ++
|
tr (th (heading genitive_Parameter) ++ td (pn.s!Gen)) ++
|
||||||
tr (th (heading dative_Parameter) ++ td (pn.sdat)) ++
|
tr (th (heading dative_Parameter) ++ td (pn.s!Dat)) ++
|
||||||
tr (th (heading accusative_Parameter) ++ td (pn.sacc)) ++
|
tr (th (heading accusative_Parameter) ++ td (pn.s!Acc)) ++
|
||||||
tr (th ("творительный") ++ td (pn.sins)) ++
|
tr (th ("творительный") ++ td (pn.s!Ins)) ++
|
||||||
tr (th ("предложный") ++ td (pn.sprep)) ++
|
tr (th ("предложный") ++ td (pn.s!Pre)) ++
|
||||||
tr (th (heading partitive_Parameter) ++ td (pn.sptv)) ++
|
tr (th (heading partitive_Parameter) ++ td (pn.s!Ptv)) ++
|
||||||
tr (th ("местный") ++ td (pn.sloc)) ++
|
tr (th ("местный") ++ td (pn.s!Loc))
|
||||||
tr (th ("звательный") ++ td (pn.svoc))
|
|
||||||
) ;
|
) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ lin
|
|||||||
|
|
||||||
-- : PN -> NP ; -- John
|
-- : PN -> NP ; -- John
|
||||||
UsePN pn = {
|
UsePN pn = {
|
||||||
s=\\cas => (nounFormsNoun pn).s ! Sg ! cas ;
|
s=pn.s ;
|
||||||
pron=False;
|
pron=False;
|
||||||
a=Ag (gennum pn.g Sg) P3
|
a=Ag (gennum pn.g pn.n) P3
|
||||||
} ; -- Does NP need animacy?
|
} ; -- Does NP need animacy?
|
||||||
|
|
||||||
-- : Pron -> NP ;
|
-- : Pron -> NP ;
|
||||||
|
|||||||
@@ -396,36 +396,27 @@ oper
|
|||||||
|
|
||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
mkPN : N -> PN
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
mkPN : A -> PN -> PN
|
||||||
= \a, pn -> pn ** {
|
= \a, pn -> pn ** {
|
||||||
snom = (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! Nom ++ pn.snom ;
|
s = \\c => (adjFormsAdjective a).s ! (gennum pn.g Sg) ! pn.anim ! c ++ pn.s ! c
|
||||||
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 ;
|
|
||||||
} ;
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ flags coding=utf8;
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
-- : Symb -> PN ; -- x
|
-- : 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
|
-- : 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
|
-- : 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
|
-- : 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
|
-- : CN -> Card -> NP ; -- level five ; level 5
|
||||||
CNNumNP cn card = {
|
CNNumNP cn card = {
|
||||||
|
|||||||
Reference in New Issue
Block a user