mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-25 11:43:39 -06:00
extended with Codex and manually refactored
This commit is contained in:
@@ -35,8 +35,8 @@ lin
|
|||||||
|
|
||||||
-- : A -> NP -> AP ; -- warmer than I - теплее меня
|
-- : A -> NP -> AP ; -- warmer than I - теплее меня
|
||||||
ComparA a np = {
|
ComparA a np = {
|
||||||
s = \\gn,anim,cas => a.comp ++ (applyPrep {s="" ; c=Gen ; neggen=True ; hasPrep=False} np) ; -- True?
|
s = \\gn,anim,cas => a.comp ++ (applyPrep {s="" ; c=Gen ; hasPrep=False} np) ; -- True?
|
||||||
short = \\ag=>a.comp ++ (applyPrep {s="" ; c=Gen ; neggen=True ; hasPrep=False} np) ;
|
short = \\gn=>a.comp ++ (applyPrep {s="" ; c=Gen ; hasPrep=False} np) ;
|
||||||
isPost = False ;
|
isPost = False ;
|
||||||
preferShort = PrefShort
|
preferShort = PrefShort
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -5,18 +5,18 @@ flags coding=utf8 ;
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
-- : A -> Adv ; -- warmly - тепло
|
-- : A -> Adv ; -- warmly - тепло
|
||||||
PositAdvAdj a = {s = a.sn} ; -- only qual
|
PositAdvAdj a = {s = a.short ! (GSg Neut)} ; -- only qual
|
||||||
|
|
||||||
-- : A -> AdA ; -- extremely - исключительно
|
-- : A -> AdA ; -- extremely - исключительно
|
||||||
PositAdAAdj a = {s = a.sn} ; -- only qual
|
PositAdAAdj a = {s = a.short ! (GSg Neut)} ; -- only qual
|
||||||
|
|
||||||
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John - более тепло чем Иван
|
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John - более тепло чем Иван
|
||||||
ComparAdvAdj cadv a np = {
|
ComparAdvAdj cadv a np = {
|
||||||
s = cadv.s ++ a.sn ++ embedInCommas (cadv.p ++ np.s ! Nom)
|
s = cadv.s ++ a.short ! (GSg Neut) ++ embedInCommas (cadv.p ++ np.s ! Nom)
|
||||||
} ;
|
} ;
|
||||||
-- : CAdv -> A -> S -> Adv ; -- more warmly than he runs - более тепло чем он бежал
|
-- : CAdv -> A -> S -> Adv ; -- more warmly than he runs - более тепло чем он бежал
|
||||||
ComparAdvAdjS cadv a s = {
|
ComparAdvAdjS cadv a s = {
|
||||||
s = cadv.s ++ a.sn ++ cadv.p ++ s.s ! Ind
|
s = cadv.s ++ a.short ! (GSg Neut) ++ cadv.p ++ s.s ! Ind
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Prep -> NP -> Adv ; -- in the house - в доме
|
-- : Prep -> NP -> Adv ; -- in the house - в доме
|
||||||
|
|||||||
+13
-3
@@ -82,6 +82,7 @@ lincat
|
|||||||
Numeral = NumeralForms ;
|
Numeral = NumeralForms ;
|
||||||
Num = NumDet ;
|
Num = NumDet ;
|
||||||
Card = NumDet ;
|
Card = NumDet ;
|
||||||
|
ACard = {s : Str} ;
|
||||||
Digits = {s : Str ; size: NumSize; tail: DTail} ;
|
Digits = {s : Str ; size: NumSize; tail: DTail} ;
|
||||||
Decimal = {s : Str ; size: NumSize; hasDot : Bool} ;
|
Decimal = {s : Str ; size: NumSize; hasDot : Bool} ;
|
||||||
|
|
||||||
@@ -124,8 +125,8 @@ linref
|
|||||||
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 ;
|
||||||
A = \s -> case s.preferShort of {PrefShort => s.sm ; _ => s.msnom} ;
|
A = \s -> case s.preferShort of {PrefShort => s.short ! (GSg Masc) ; _ => s.msnom} ;
|
||||||
A2 = \s -> case s.preferShort of {PrefShort => s.sm ; _ => s.msnom} ++ s.c.s ; -- ?
|
A2 = \s -> case s.preferShort of {PrefShort => s.short ! (GSg Masc) ; _ => s.msnom} ++ s.c.s ; -- ?
|
||||||
V = \s -> verbInf s ;
|
V = \s -> verbInf s ;
|
||||||
V2 = \s -> (verbInf s) ++ s.c.s ;
|
V2 = \s -> (verbInf s) ++ s.c.s ;
|
||||||
V2V = \s -> (verbInf s) ++ s.c.s ;
|
V2V = \s -> (verbInf s) ++ s.c.s ;
|
||||||
@@ -161,9 +162,18 @@ lindef
|
|||||||
prpl1,prpl2,prpl3,
|
prpl1,prpl2,prpl3,
|
||||||
psgm,psgs,
|
psgm,psgs,
|
||||||
isg2,isg2refl,ipl1,
|
isg2,isg2refl,ipl1,
|
||||||
ppps,pppss,prtr,ptr=s;
|
prtr,ptr=s;
|
||||||
asp=Imperfective ;
|
asp=Imperfective ;
|
||||||
fut=NullFuture ;
|
fut=NullFuture ;
|
||||||
|
prap={
|
||||||
|
msnom,fsnom,nsnom,pnom,msgen,fsgen,pgen,msdat,fsacc,
|
||||||
|
msins,fsins,pins,msprep=s;
|
||||||
|
};
|
||||||
|
pppa={
|
||||||
|
msnom,fsnom,nsnom,pnom,msgen,fsgen,pgen,msdat,fsacc,
|
||||||
|
msins,fsins,pins,msprep=s;
|
||||||
|
short=\\_=>s;
|
||||||
|
};
|
||||||
refltran = Trans
|
refltran = Trans
|
||||||
} ;
|
} ;
|
||||||
dep = "" ;
|
dep = "" ;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
[IAdv] = {s1,s2 : Str} ;
|
[IAdv] = {s1,s2 : Str} ;
|
||||||
[AdV] = {s1,s2 : Str} ;
|
[AdV] = {s1,s2 : Str} ;
|
||||||
[AP] = {s1,s2 : AdjTable ;
|
[AP] = {s1,s2 : AdjTable ;
|
||||||
short1,short2 : AgrTable ;
|
short1,short2 : GenNum => Str ;
|
||||||
isPost : Bool;
|
isPost : Bool;
|
||||||
preferShort : ShortFormPreference
|
preferShort : ShortFormPreference
|
||||||
} ;
|
} ;
|
||||||
@@ -58,7 +58,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
|
|
||||||
-- ConsAP : AP -> ListAP -> ListAP ; -- red, white, blue
|
-- ConsAP : AP -> ListAP -> ListAP ; -- red, white, blue
|
||||||
ConsAP x xs = consrTable3 GenNum Animacy Case comma x xs ** {
|
ConsAP x xs = consrTable3 GenNum Animacy Case comma x xs ** {
|
||||||
short1 = \\ag=> x.short ! ag ++ comma ++ xs.short1 ! ag ;
|
short1 = \\gn=> x.short ! gn ++ comma ++ xs.short1 ! gn ;
|
||||||
short2 = xs.short2 ;
|
short2 = xs.short2 ;
|
||||||
isPost = orB x.isPost xs.isPost ;
|
isPost = orB x.isPost xs.isPost ;
|
||||||
preferShort = selectAPForm x.preferShort xs.preferShort
|
preferShort = selectAPForm x.preferShort xs.preferShort
|
||||||
@@ -72,7 +72,6 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
|
|
||||||
-- : DAP -> ListDAP -> ListDAP ; --
|
-- : DAP -> ListDAP -> ListDAP ; --
|
||||||
ConsDAP x xs = consrTable3 Gender Animacy Case comma x xs ** {
|
ConsDAP x xs = consrTable3 Gender Animacy Case comma x xs ** {
|
||||||
g = xs.g ; --?
|
|
||||||
c = xs.c ; -- ?
|
c = xs.c ; -- ?
|
||||||
size = xs.size -- different genders -> plural?
|
size = xs.size -- different genders -> plural?
|
||||||
} ;
|
} ;
|
||||||
@@ -81,7 +80,6 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
ConjDet conj xs = {
|
ConjDet conj xs = {
|
||||||
s=\\g,anim,cas => conj.s1 ++ xs.s1 ! g ! anim ! cas ++ conj.s2 ++ xs.s2 ! g ! anim ! cas ;
|
s=\\g,anim,cas => conj.s1 ++ xs.s1 ! g ! anim ! cas ++ conj.s2 ++ xs.s2 ! g ! anim ! cas ;
|
||||||
type=NormalDet ; -- hopefully ok to drop empty cases
|
type=NormalDet ; -- hopefully ok to drop empty cases
|
||||||
g=xs.g ;
|
|
||||||
c=xs.c ;
|
c=xs.c ;
|
||||||
size=xs.size
|
size=xs.size
|
||||||
} ;
|
} ;
|
||||||
@@ -93,10 +91,10 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
ConsS = consrTable Mood comma ;
|
ConsS = consrTable Mood comma ;
|
||||||
|
|
||||||
-- : RS -> RS -> ListRS ; -- who walks, whom I know
|
-- : RS -> RS -> ListRS ; -- who walks, whom I know
|
||||||
BaseRS x y = twoTable3 GenNum Animacy Case x y ** {c = y.c} ;
|
BaseRS x y = twoTable3 GenNum Animacy Case x y ;
|
||||||
|
|
||||||
-- : RS -> ListRS -> ListRS ; -- who walks, whom I know, who is here
|
-- : RS -> ListRS -> ListRS ; -- who walks, whom I know, who is here
|
||||||
ConsRS xs x = consrTable3 GenNum Animacy Case comma xs x ** {c = xs.c} ;
|
ConsRS xs x = consrTable3 GenNum Animacy Case comma xs x ;
|
||||||
|
|
||||||
-- : Conj -> ListAdv -> Adv ; -- here or there
|
-- : Conj -> ListAdv -> Adv ; -- here or there
|
||||||
ConjAdv = conjunctDistrSS ;
|
ConjAdv = conjunctDistrSS ;
|
||||||
@@ -118,9 +116,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
ConjS conj ss = conjunctDistrTable Mood conj ss ;
|
ConjS conj ss = conjunctDistrTable Mood conj ss ;
|
||||||
|
|
||||||
-- : Conj -> ListRS -> RS ; -- who walks and whose mother runs
|
-- : Conj -> ListRS -> RS ; -- who walks and whose mother runs
|
||||||
ConjRS conj ss = conjunctDistrTable3 GenNum Animacy Case conj ss ** {
|
ConjRS conj ss = conjunctDistrTable3 GenNum Animacy Case conj ss ;
|
||||||
c = ss.c
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- : CN -> CN -> ListCN ; -- man, woman
|
-- : CN -> CN -> ListCN ; -- man, woman
|
||||||
BaseCN x y = {
|
BaseCN x y = {
|
||||||
@@ -165,8 +161,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
--prep1 = \\c => x.prep ! c ++ comma ++ xs.prep1 ! c ;
|
--prep1 = \\c => x.prep ! c ++ comma ++ xs.prep1 ! c ;
|
||||||
--prep2 = xs.prep2 ;
|
--prep2 = xs.prep2 ;
|
||||||
a = conjAgr x.a xs.a ;
|
a = conjAgr x.a xs.a ;
|
||||||
pron = xs.pron ;
|
pron = xs.pron
|
||||||
anim = conjAnim x.anim xs.anim
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Conj -> ListNP -> NP ; -- she or we
|
-- : Conj -> ListNP -> NP ; -- she or we
|
||||||
@@ -176,8 +171,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
Sg => xs.a ;
|
Sg => xs.a ;
|
||||||
Pl => case xs.a of {Ag gn p => Ag GPl p}
|
Pl => case xs.a of {Ag gn p => Ag GPl p}
|
||||||
} ;
|
} ;
|
||||||
pron = xs.pron ;
|
pron = xs.pron
|
||||||
anim = xs.anim
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ lin
|
|||||||
adv=[];
|
adv=[];
|
||||||
verb=copulaEll ; -- ???
|
verb=copulaEll ; -- ???
|
||||||
dep=[] ;
|
dep=[] ;
|
||||||
compl=\\_ => (PositA married).short ! np1.a ++ applyPrep cc np2 ;
|
compl=\\_ => (PositA married).short ! (agrGenNum np1.a) ++ applyPrep cc np2 ;
|
||||||
a=np1.a ; ---
|
a=np1.a ; ---
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ lin
|
|||||||
subj=[] ;
|
subj=[] ;
|
||||||
adv=[] ;
|
adv=[] ;
|
||||||
verb=copulaEll ;
|
verb=copulaEll ;
|
||||||
dep=ap.short ! Ag (GSg Neut) P3 ;
|
dep=ap.short ! (GSg Neut) ;
|
||||||
compl=\\p=>[] ;
|
compl=\\p=>[] ;
|
||||||
a=Ag (GSg Neut) P3
|
a=Ag (GSg Neut) P3
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ oper
|
|||||||
let pres : Agr=>Str = \\a => verbPresAgree v a in
|
let pres : Agr=>Str = \\a => verbPresAgree v a in
|
||||||
let past : Agr=>Str = \\a => verbPastAgree v a "" in
|
let past : Agr=>Str = \\a => verbPastAgree v a "" in
|
||||||
let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in
|
let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in
|
||||||
let ppp : GenNum=>Str = \\gn => shortPastPassPart v gn in
|
let ppp : GenNum=>Str = (pastPassPart v).short in
|
||||||
case v.asp of {Imperfective => "несовершенного вида" ; Perfective => "совершенного вида"} ++ "," ++
|
case v.asp of {Imperfective => "несовершенного вида" ; Perfective => "совершенного вида"} ++ "," ++
|
||||||
case v.refltran of {
|
case v.refltran of {
|
||||||
Refl => "возвратный" ;
|
Refl => "возвратный" ;
|
||||||
|
|||||||
+161
-34
@@ -21,9 +21,10 @@ concrete ExtendRus of Extend =
|
|||||||
-- MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
|
-- MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
|
||||||
-- Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN,
|
-- Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN,
|
||||||
-- CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP,
|
-- CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP,
|
||||||
CompoundN,
|
CompoundN, CompoundAP,
|
||||||
|
|
||||||
--ConjRNP, Cons_nr_RNP, Cons_rr_RNP,
|
ConjImp, BaseImp, ConsImp,
|
||||||
|
RNP, RNPList, ConjRNP, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP,
|
||||||
DetNPMasc,
|
DetNPMasc,
|
||||||
DetNPFem,
|
DetNPFem,
|
||||||
UseDAP,
|
UseDAP,
|
||||||
@@ -36,20 +37,21 @@ concrete ExtendRus of Extend =
|
|||||||
-- FocusAP, FocusAdV, FocusAdv,
|
-- FocusAP, FocusAdV, FocusAdv,
|
||||||
FocusObj,
|
FocusObj,
|
||||||
-- GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
-- GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
||||||
-- GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP,
|
GerundAdv, GerundCN, GerundNP, ByVP,
|
||||||
InOrderToVP,
|
InOrderToVP,
|
||||||
-- NominalizeVPSlashNP,
|
-- NominalizeVPSlashNP,
|
||||||
PassAgentVPSlash,
|
PassAgentVPSlash,
|
||||||
PassVPSlash,
|
PassVPSlash,
|
||||||
-- ProgrVPSlash,
|
ProgrVPSlash,
|
||||||
PastPartAP,
|
PastPartAP,
|
||||||
PastPartAgentAP,
|
PastPartAgentAP,
|
||||||
PositAdVAdj,
|
PositAdVAdj,
|
||||||
PredVPS,
|
PredVPS,
|
||||||
-- PredVPSVV, PredetRNP, PrepCN,
|
-- PredVPSVV, PredetRNP, PrepCN,
|
||||||
-- EmbedSSlash, PresPartAP,
|
PresPartAP,
|
||||||
PurposeVP,
|
PurposeVP,
|
||||||
-- ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
ReflPoss, ReflPron, ReflRNP, PredetRNP, AdvRNP, AdvRVP, AdvRAP,
|
||||||
|
ReflA2RNP, PossPronRNP,
|
||||||
PredIAdvVP,
|
PredIAdvVP,
|
||||||
-- UncontractedNeg, UttAccIP, UttAccNP,
|
-- UncontractedNeg, UttAccIP, UttAccNP,
|
||||||
FrontComplDirectVS,
|
FrontComplDirectVS,
|
||||||
@@ -64,8 +66,9 @@ lincat
|
|||||||
VPS = {s : Mood => Agr => Str} ;
|
VPS = {s : Mood => Agr => Str} ;
|
||||||
[VPS] = {s1,s2 : Mood => Agr => Str} ;
|
[VPS] = {s1,s2 : Mood => Agr => Str} ;
|
||||||
[Comp] = {s1,s2 : AgrTable ; cop : CopulaType} ;
|
[Comp] = {s1,s2 : AgrTable ; cop : CopulaType} ;
|
||||||
RNP = {s : Agr => Str} ;
|
[Imp] = {s1,s2 : Polarity => GenNum => Str} ;
|
||||||
RNPList = {s1,s2 : Agr => Str} ;
|
RNP = {s : Case => Str} ;
|
||||||
|
RNPList = {s1,s2 : Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- : NP -> NP -> NP ; -- Mr Macron, the president of France,
|
-- : NP -> NP -> NP ; -- Mr Macron, the president of France,
|
||||||
@@ -79,18 +82,18 @@ lin
|
|||||||
PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk
|
PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk
|
||||||
|
|
||||||
-- : VP -> Adv ; -- (in order) to publish the document
|
-- : VP -> Adv ; -- (in order) to publish the document
|
||||||
InOrderToVP vp = lin Adv ({
|
InOrderToVP vp = {
|
||||||
s = "чтобы"
|
s = "чтобы"
|
||||||
++ vp.adv ! Ag (GSg Neut) P3
|
++ vp.adv ! Ag (GSg Neut) P3
|
||||||
++ (verbInf vp.verb)
|
++ (verbInf vp.verb)
|
||||||
++ vp.dep
|
++ vp.dep
|
||||||
++ vp.compl ! Pos ! Ag (GSg Neut) P3
|
++ vp.compl ! Pos ! Ag (GSg Neut) P3
|
||||||
}) ;
|
} ;
|
||||||
|
|
||||||
-- : VP -> Adv ; -- to become happy
|
-- : VP -> Adv ; -- to become happy
|
||||||
PurposeVP vp = lin Adv ({
|
PurposeVP vp = {
|
||||||
s = vp.adv ! Ag (GSg Neut) P3 ++ (verbInf vp.verb) ++ vp.dep ++ vp.compl ! Pos ! Ag (GSg Neut) P3
|
s = vp.adv ! Ag (GSg Neut) P3 ++ (verbInf vp.verb) ++ vp.dep ++ vp.compl ! Pos ! Ag (GSg Neut) P3
|
||||||
}) ;
|
} ;
|
||||||
|
|
||||||
-- : NP -> Cl ; -- there exists a number / there exist numbers
|
-- : NP -> Cl ; -- there exists a number / there exist numbers
|
||||||
ExistsNP np = {
|
ExistsNP np = {
|
||||||
@@ -148,21 +151,36 @@ lin
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- : VP -> AP ; -- (the man) looking at Mary
|
||||||
|
PresPartAP vp = {
|
||||||
|
s=\\gn,anim,cas =>
|
||||||
|
vp.adv ! (genNumAgrP3 gn)
|
||||||
|
++ (presActPart vp.verb).s ! gn ! anim ! cas
|
||||||
|
++ vp.dep
|
||||||
|
++ vp.compl ! Pos ! (genNumAgrP3 gn) ;
|
||||||
|
short=\\gn =>
|
||||||
|
vp.adv ! (genNumAgrP3 gn)
|
||||||
|
++ (presActPart vp.verb).s ! gn ! Animate ! Nom
|
||||||
|
++ vp.dep
|
||||||
|
++ vp.compl ! Pos ! (genNumAgrP3 gn) ;
|
||||||
|
isPost=False ;
|
||||||
|
preferShort=PreferFull
|
||||||
|
} ;
|
||||||
|
|
||||||
-- VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
-- VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
||||||
PastPartAP vps = {
|
PastPartAP vps = {
|
||||||
s=\\gn,anim,cas =>
|
s=\\gn,anim,cas =>
|
||||||
vps.adv ! (genNumAgrP3 gn)
|
vps.adv ! (genNumAgrP3 gn)
|
||||||
++ shortPastPassPart vps.verb gn
|
++ (pastPassPart vps.verb).s ! gn ! anim ! cas
|
||||||
++ vps.dep
|
++ vps.dep
|
||||||
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
||||||
++ vps.compl2 ! Pos ! (genNumAgrP3 gn);
|
++ vps.compl2 ! Pos ! (genNumAgrP3 gn);
|
||||||
short=\\a =>
|
short=\\gn =>
|
||||||
vps.adv ! a
|
vps.adv ! (genNumAgrP3 gn)
|
||||||
++ shortPastPassPart vps.verb (agrGenNum a)
|
++ (pastPassPart vps.verb).short ! gn
|
||||||
++ vps.dep
|
++ vps.dep
|
||||||
++ vps.compl1 ! Pos ! a
|
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
||||||
++ vps.compl2 ! Pos ! a
|
++ vps.compl2 ! Pos ! (genNumAgrP3 gn) ;
|
||||||
++ vps.c.s ; --
|
|
||||||
isPost = case vps.isSimple of {
|
isPost = case vps.isSimple of {
|
||||||
True => False ;
|
True => False ;
|
||||||
False => True
|
False => True
|
||||||
@@ -171,21 +189,21 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
-- : VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
||||||
PastPartAgentAP vps np ={
|
PastPartAgentAP vps np = {
|
||||||
s=\\gn,anim,cas =>
|
s=\\gn,anim,cas =>
|
||||||
vps.adv ! (genNumAgrP3 gn)
|
vps.adv ! (genNumAgrP3 gn)
|
||||||
++ shortPastPassPart vps.verb gn
|
++ (pastPassPart vps.verb).s ! gn ! anim ! cas
|
||||||
++ vps.dep
|
++ vps.dep
|
||||||
++ applyPolPrep Pos vps.c np
|
++ np.s ! Ins
|
||||||
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
||||||
++ vps.compl2 ! Pos ! (genNumAgrP3 gn);
|
++ vps.compl2 ! Pos ! (genNumAgrP3 gn);
|
||||||
short=\\a =>
|
short=\\gn =>
|
||||||
vps.adv ! a
|
vps.adv ! (genNumAgrP3 gn)
|
||||||
++ shortPastPassPart vps.verb (agrGenNum a)
|
++ (pastPassPart vps.verb).short ! gn
|
||||||
++ vps.dep
|
++ vps.dep
|
||||||
++ applyPolPrep Pos vps.c np
|
++ np.s ! Ins
|
||||||
++ vps.compl1 ! Pos ! a
|
++ vps.compl1 ! Pos ! (genNumAgrP3 gn)
|
||||||
++ vps.compl2 ! Pos ! a ;
|
++ vps.compl2 ! Pos ! (genNumAgrP3 gn) ;
|
||||||
isPost = False ;
|
isPost = False ;
|
||||||
preferShort=PreferFull
|
preferShort=PreferFull
|
||||||
} ;
|
} ;
|
||||||
@@ -194,7 +212,7 @@ lin
|
|||||||
PassVPSlash vps = case vps.verb.asp of {
|
PassVPSlash vps = case vps.verb.asp of {
|
||||||
Perfective => vps ** {
|
Perfective => vps ** {
|
||||||
verb=copulaEll ;
|
verb=copulaEll ;
|
||||||
compl=\\p,a => shortPastPassPart vps.verb (agrGenNum a) ++ vps.compl1 ! p ! a ++ vps.compl2 ! p ! a ++ vps.c.s
|
compl=\\p,a => (pastPassPart vps.verb).short ! (agrGenNum a) ++ vps.compl1 ! p ! a ++ vps.compl2 ! p ! a ++ vps.c.s
|
||||||
} ;
|
} ;
|
||||||
Imperfective => vps ** {
|
Imperfective => vps ** {
|
||||||
verb=(passivate vps.verb);
|
verb=(passivate vps.verb);
|
||||||
@@ -202,14 +220,11 @@ lin
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
-- PresPartAP : VP -> AP ; -- (the man) looking at Mary
|
|
||||||
-- use PlP2 + "ый"
|
|
||||||
|
|
||||||
-- : VPSlash -> VP
|
-- : VPSlash -> VP
|
||||||
PassAgentVPSlash vps np = case vps.verb.asp of {
|
PassAgentVPSlash vps np = case vps.verb.asp of {
|
||||||
Perfective => vps ** {
|
Perfective => vps ** {
|
||||||
verb=copulaEll ;
|
verb=copulaEll ;
|
||||||
compl=\\p,a => shortPastPassPart vps.verb (agrGenNum a) ++ vps.c.s ++ vps.compl1 ! p ! a ++ vps.compl2 ! p ! a ++ np.s ! Ins
|
compl=\\p,a => (pastPassPart vps.verb).short ! (agrGenNum a) ++ vps.c.s ++ vps.compl1 ! p ! a ++ vps.compl2 ! p ! a ++ np.s ! Ins
|
||||||
} ;
|
} ;
|
||||||
Imperfective => vps ** {
|
Imperfective => vps ** {
|
||||||
verb=(passivate vps.verb);
|
verb=(passivate vps.verb);
|
||||||
@@ -217,6 +232,109 @@ lin
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
-- Russian has no productive nominal gerund. The infinitive is the
|
||||||
|
-- neutral fallback used by the multilingual Extend API.
|
||||||
|
GerundCN vp = nounFormsNoun (immutableNounForms
|
||||||
|
(vp.adv ! Ag (GSg Neut) P3 ++ verbInf vp.verb ++ vp.dep
|
||||||
|
++ vp.compl ! Pos ! Ag (GSg Neut) P3)
|
||||||
|
Neut Inanimate) ;
|
||||||
|
|
||||||
|
GerundNP vp = {
|
||||||
|
s=\\_ => vp.adv ! Ag (GSg Neut) P3 ++ verbInf vp.verb ++ vp.dep
|
||||||
|
++ vp.compl ! Pos ! Ag (GSg Neut) P3 ;
|
||||||
|
pron=False ;
|
||||||
|
a=Ag (GSg Neut) P3
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GerundAdv vp = {
|
||||||
|
s=vp.adv ! Ag (GSg Neut) P3
|
||||||
|
++ vp.verb.prtr ++ verbRefl vp.verb ++ vp.dep
|
||||||
|
++ vp.compl ! Pos ! Ag (GSg Neut) P3
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ByVP vp = GerundAdv vp ;
|
||||||
|
|
||||||
|
CompoundAP n a =
|
||||||
|
let ap = adjFormsAdjective a in {
|
||||||
|
s=\\gn,anim,cas => n.snom ++ "-" ++ ap.s ! gn ! anim ! cas ;
|
||||||
|
short=\\agr => n.snom ++ "-" ++ ap.short ! agr ;
|
||||||
|
isPost=False ;
|
||||||
|
preferShort=a.preferShort
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ProgrVPSlash vps = vps ;
|
||||||
|
|
||||||
|
ReflRNP vps rnp = {
|
||||||
|
verb=vps.verb ;
|
||||||
|
adv=vps.adv ;
|
||||||
|
dep=vps.dep ;
|
||||||
|
compl=\\p,a => vps.compl1 ! p ! a ++ vps.c.s
|
||||||
|
++ rnp.s ! vps.c.c ++ vps.compl2 ! p ! a ;
|
||||||
|
p=vps.p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflPron = sebya ;
|
||||||
|
|
||||||
|
ReflPoss num cn = {
|
||||||
|
s=\\cas =>
|
||||||
|
(mkPronTable (reflexivePron (Ag (GSg Masc) P3)).poss)
|
||||||
|
! gennum cn.g (numSizeNumber num.size)
|
||||||
|
! cn.anim ! numSizeCase cas num.size
|
||||||
|
++ num.s ! cn.g ! cn.anim ! cas
|
||||||
|
++ cn.s ! animNumSizeNum cn.anim cas num.size
|
||||||
|
! numSizeCase cas num.size
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PredetRNP pred rnp = {
|
||||||
|
s=\\cas => pred.s ! GSg Masc ! Inanimate ! cas ++ rnp.s ! cas
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRNP np prep rnp = {
|
||||||
|
s=\\cas => np.s ! cas ++ prep.s ++ rnp.s ! prep.c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRVP vp prep rnp = vp ** {
|
||||||
|
compl=\\p,a => vp.compl ! p ! a ++ prep.s ++ rnp.s ! prep.c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRAP ap prep rnp = ap ** {
|
||||||
|
s=\\gn,anim,cas => ap.s ! gn ! anim ! cas
|
||||||
|
++ prep.s ++ rnp.s ! prep.c ;
|
||||||
|
short=\\a => ap.short ! a ++ prep.s ++ rnp.s ! prep.c ;
|
||||||
|
isPost=True
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflA2RNP a2 rnp = {
|
||||||
|
s=\\gn,anim,cas =>
|
||||||
|
(adjFormsAdjective a2).s ! gn ! anim ! cas
|
||||||
|
++ a2.c.s ++ rnp.s ! a2.c.c ;
|
||||||
|
short=\\a =>
|
||||||
|
(adjFormsAdjective a2).short ! a
|
||||||
|
++ a2.c.s ++ rnp.s ! a2.c.c ;
|
||||||
|
isPost=False ;
|
||||||
|
preferShort=a2.preferShort
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PossPronRNP pron num cn rnp =
|
||||||
|
let np = DetCN (DetQuant (PossPron pron) num) cn in {
|
||||||
|
s=\\cas => np.s ! cas ++ rnp.s ! Gen ;
|
||||||
|
pron=False ;
|
||||||
|
a=np.a
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjRNP conj xs = {
|
||||||
|
s=\\cas => conj.s1 ++ xs.s1 ! cas ++ conj.s2 ++ xs.s2 ! cas
|
||||||
|
} ;
|
||||||
|
Base_rr_RNP x y = {s1=x.s ; s2=y.s} ;
|
||||||
|
Base_nr_RNP x y = {s1=x.s ; s2=y.s} ;
|
||||||
|
Base_rn_RNP x y = {s1=x.s ; s2=y.s} ;
|
||||||
|
Cons_rr_RNP x xs = {
|
||||||
|
s1=\\c => x.s ! c ++ comma ++ xs.s1 ! c ; s2=xs.s2
|
||||||
|
} ;
|
||||||
|
Cons_nr_RNP x xs = {
|
||||||
|
s1=\\c => x.s ! c ++ comma ++ xs.s1 ! c ; s2=xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
-- : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
||||||
ProDrop pron = {
|
ProDrop pron = {
|
||||||
@@ -230,7 +348,7 @@ lin
|
|||||||
UttAdV adv = {s=adv.s} ;
|
UttAdV adv = {s=adv.s} ;
|
||||||
|
|
||||||
-- : A -> AdV ; -- (that she) positively (sleeps)
|
-- : A -> AdV ; -- (that she) positively (sleeps)
|
||||||
PositAdVAdj a = ss a.sn ** {p=Pos} ;
|
PositAdVAdj a = {s=a.short ! (GSg Neut); p=Pos} ;
|
||||||
|
|
||||||
-- : NP -> SSlash -> Utt ; -- her I love
|
-- : NP -> SSlash -> Utt ; -- her I love
|
||||||
FocusObj np ss = {
|
FocusObj np ss = {
|
||||||
@@ -345,6 +463,15 @@ lin
|
|||||||
cop = xs.cop
|
cop = xs.cop
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
BaseImp x y = {s1=x.s ; s2=y.s} ;
|
||||||
|
ConsImp x xs = {
|
||||||
|
s1=\\p,gn => x.s ! p ! gn ++ comma ++ xs.s1 ! p ! gn ;
|
||||||
|
s2=xs.s2
|
||||||
|
} ;
|
||||||
|
ConjImp conj xs = {
|
||||||
|
s=\\p,gn => conj.s1 ++ xs.s1 ! p ! gn ++ conj.s2 ++ xs.s2 ! p ! gn
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : NP -> VPS -> S ;
|
-- : NP -> VPS -> S ;
|
||||||
PredVPS np vps = {
|
PredVPS np vps = {
|
||||||
s = \\m => np.s ! Nom ++ vps.s ! m ! np.a
|
s = \\m => np.s ! Nom ++ vps.s ! m ! np.a
|
||||||
|
|||||||
+12
-12
@@ -4,13 +4,13 @@ concrete ExtraRus of ExtraRusAbs = CatRus **
|
|||||||
open ResRus, MorphoRus, (P=ParadigmsRus), (X = ConstructX), Prelude, Coordination, NounRus in {
|
open ResRus, MorphoRus, (P=ParadigmsRus), (X = ConstructX), Prelude, Coordination, NounRus in {
|
||||||
flags optimize=all ; coding=utf8 ;
|
flags optimize=all ; coding=utf8 ;
|
||||||
lin
|
lin
|
||||||
nom_Prep = lin Prep {s="" ; c=Nom ; neggen=True ; hasPrep=False} ;
|
nom_Prep = {s="" ; c=Nom ; hasPrep=False} ;
|
||||||
obj_neg_Prep = lin Prep {s="" ; c=Gen ; neggen=False ; hasPrep=False} ;
|
obj_neg_Prep = {s="" ; c=Gen ; hasPrep=False} ;
|
||||||
obj_no_Prep = lin Prep {s="" ; c=Acc ; neggen=True ; hasPrep=False} ;
|
obj_no_Prep = {s="" ; c=Acc ; hasPrep=False} ;
|
||||||
to_dat_Prep = lin Prep {s="" ; c=Dat ; neggen=False ; hasPrep=False} ;
|
to_dat_Prep = {s="" ; c=Dat ; hasPrep=False} ;
|
||||||
ins_Prep = lin Prep {s="" ; c=Ins ; neggen=False ; hasPrep=False} ;
|
ins_Prep = {s="" ; c=Ins ; hasPrep=False} ;
|
||||||
to2_Prep = P.mkPrep v_prep_mod Acc ;
|
to2_Prep = P.mkPrep v_prep_mod Acc ;
|
||||||
u_Prep = lin Prep {s="у" ; c=Gen ; neggen=False ; hasPrep=True} ;
|
u_Prep = {s="у" ; c=Gen ; hasPrep=True} ;
|
||||||
on_to_Prep = P.mkPrep "до" Gen ;
|
on_to_Prep = P.mkPrep "до" Gen ;
|
||||||
on2_Prep = P.on2_Prep ;
|
on2_Prep = P.on2_Prep ;
|
||||||
along_Prep = P.mkPrep "по" Loc ;
|
along_Prep = P.mkPrep "по" Loc ;
|
||||||
@@ -68,8 +68,8 @@ lin
|
|||||||
there_is_nowhere_Adv = P.mkAdv "негде" ;
|
there_is_nowhere_Adv = P.mkAdv "негде" ;
|
||||||
|
|
||||||
-- indefinite
|
-- indefinite
|
||||||
nechto_NP = lin NP nechto ; -- "something unknown". Use Nom, Acc only
|
nechto_NP = nechto ; -- "something unknown". Use Nom, Acc only
|
||||||
anybody_NP = lin NP anybody ; -- "somenoby unknown". Use Nom only
|
anybody_NP = anybody ; -- "somenoby unknown". Use Nom only
|
||||||
|
|
||||||
somehow_Adv = P.mkAdv "как-нибудь";
|
somehow_Adv = P.mkAdv "как-нибудь";
|
||||||
somehow2_Adv = P.mkAdv "как-то";
|
somehow2_Adv = P.mkAdv "как-то";
|
||||||
@@ -194,8 +194,8 @@ oper
|
|||||||
isg2="";
|
isg2="";
|
||||||
isg2refl="" ;
|
isg2refl="" ;
|
||||||
ipl1="";
|
ipl1="";
|
||||||
ppps="явленн"; --*
|
prap=mkPresPartForms "существующ";
|
||||||
pppss="явлен"; --*
|
pppa=mkPastPassPartForms "явленн" "явлен";
|
||||||
prtr="существуя"; --*
|
prtr="существуя"; --*
|
||||||
ptr="существовав"; --*
|
ptr="существовав"; --*
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
@@ -216,8 +216,8 @@ oper
|
|||||||
isg2="";
|
isg2="";
|
||||||
isg2refl="" ;
|
isg2refl="" ;
|
||||||
ipl1="";
|
ipl1="";
|
||||||
ppps=["не явленн"]; --*
|
prap=mkPresPartForms "несуществующ";
|
||||||
pppss=["не явлен"]; --*
|
pppa=mkPastPassPartForms "неявленн" "неявлен";
|
||||||
prtr=["не существуя"]; --*
|
prtr=["не существуя"]; --*
|
||||||
ptr=["не существовав"]; --*
|
ptr=["не существовав"]; --*
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
|
|||||||
@@ -550,11 +550,15 @@ oper
|
|||||||
|
|
||||||
onlyParticipleForms : AdjForms -> AdjForms
|
onlyParticipleForms : AdjForms -> AdjForms
|
||||||
-- To prevent shadowing homonymic forms while parsing or empty, here asterisk has been to incorect forms
|
-- To prevent shadowing homonymic forms while parsing or empty, here asterisk has been to incorect forms
|
||||||
= \af -> af ** {sm=af.sm+"*"; sf=af.sf+"*"; sn=af.sn+"*"; sp=af.sp+"*"; comp=af.comp+"*"} ;
|
= \af -> af ** { short=\\gn => af.short ! gn + "*";
|
||||||
|
comp=af.comp+"*"
|
||||||
|
} ;
|
||||||
|
|
||||||
immutableAdjectiveCases : Str -> AdjForms
|
immutableAdjectiveCases : Str -> AdjForms
|
||||||
= \s -> {
|
= \s -> {
|
||||||
msnom=s;fsnom=s;nsnom=s;pnom=s;msgen=s;fsgen=s;pgen=s;msdat=s;fsacc=s;msins=s;fsins=s;pins=s;msprep=s;sm=s;sf=s;sn=s;sp=s;comp=[];
|
msnom=s;fsnom=s;nsnom=s;pnom=s;msgen=s;fsgen=s;pgen=s;msdat=s;fsacc=s;msins=s;fsins=s;pins=s;msprep=s;
|
||||||
|
short=\\_=>s;
|
||||||
|
comp=[];
|
||||||
preferShort=PreferFull ;
|
preferShort=PreferFull ;
|
||||||
p=False
|
p=False
|
||||||
} ;
|
} ;
|
||||||
@@ -652,10 +656,12 @@ oper
|
|||||||
fsins = s + aef.fsins ;
|
fsins = s + aef.fsins ;
|
||||||
pins = s + aef.pins ;
|
pins = s + aef.pins ;
|
||||||
msprep= s + aef.msprep ;
|
msprep= s + aef.msprep ;
|
||||||
sm = sms + aef.sm ;
|
short = table {
|
||||||
sf = sstem + aef.sf ;
|
GSg Masc => sms + aef.short ! GSg Masc ;
|
||||||
sn = sstem + aef.sn ;
|
GSg Fem => sstem + aef.short ! GSg Fem ;
|
||||||
sp = sstem + aef.sp ;
|
GSg Neut => sstem + aef.short ! GSg Neut ;
|
||||||
|
GPl => sstem + aef.short ! GPl
|
||||||
|
} ;
|
||||||
comp = comps + aef.comp ;
|
comp = comps + aef.comp ;
|
||||||
preferShort = aef.preferShort ;
|
preferShort = aef.preferShort ;
|
||||||
p = aef.p
|
p = aef.p
|
||||||
@@ -680,10 +686,12 @@ oper
|
|||||||
fsins = s + aef.fsins ;
|
fsins = s + aef.fsins ;
|
||||||
pins = s + aef.pins ;
|
pins = s + aef.pins ;
|
||||||
msprep= s + aef.msprep ;
|
msprep= s + aef.msprep ;
|
||||||
sm = sms + aef.sm ;
|
short = table {
|
||||||
sf = sstem + aef.sf ;
|
GSg Masc => sms + aef.short ! GSg Masc ;
|
||||||
sn = sstem + aef.sn ;
|
GSg Fem => sstem + aef.short ! GSg Fem ;
|
||||||
sp = sstem + aef.sp ;
|
GSg Neut => sstem + aef.short ! GSg Neut ;
|
||||||
|
GPl => sstem + aef.short ! GPl
|
||||||
|
} ;
|
||||||
comp = comps + aef.comp ;
|
comp = comps + aef.comp ;
|
||||||
preferShort = aef.preferShort ;
|
preferShort = aef.preferShort ;
|
||||||
p = False
|
p = False
|
||||||
@@ -711,10 +719,12 @@ oper
|
|||||||
fsins = stressSelectionAdj aef1.fsins ss "fsins" ;
|
fsins = stressSelectionAdj aef1.fsins ss "fsins" ;
|
||||||
pins = stressSelectionAdj aef1.pins ss "pins" ;
|
pins = stressSelectionAdj aef1.pins ss "pins" ;
|
||||||
msprep = stressSelectionAdj aef1.msprep ss "msprep" ;
|
msprep = stressSelectionAdj aef1.msprep ss "msprep" ;
|
||||||
sm = stressSelectionAdj aef1.sm ss "sm" ;
|
short = table {
|
||||||
sf = stressSelectionAdj aef1.sf ss "sf" ;
|
GSg Masc => stressSelectionAdj aef1.sm ss "sm" ;
|
||||||
sn = stressSelectionAdj aef1.sn ss "sn" ;
|
GSg Fem => stressSelectionAdj aef1.sf ss "sf" ;
|
||||||
sp = stressSelectionAdj aef1.sp ss "sp" ;
|
GSg Neut => stressSelectionAdj aef1.sn ss "sn" ;
|
||||||
|
GPl => stressSelectionAdj aef1.sp ss "sp"
|
||||||
|
} ;
|
||||||
comp = stressSelectionAdj aef1.comp ss "comp" ;
|
comp = stressSelectionAdj aef1.comp ss "comp" ;
|
||||||
preferShort = sfp ;
|
preferShort = sfp ;
|
||||||
p = False
|
p = False
|
||||||
@@ -998,8 +1008,8 @@ oper
|
|||||||
isg2=imp.isg2 ;
|
isg2=imp.isg2 ;
|
||||||
isg2refl=imp.isg2refl ;
|
isg2refl=imp.isg2refl ;
|
||||||
ipl1=imp.ipl1 ;
|
ipl1=imp.ipl1 ;
|
||||||
ppps=ppp.ppps ;
|
prap=mkPresPartForms ((Predef.tk 1 presfut.prpl3) + "щ") ;
|
||||||
pppss=ppp.pppss ;
|
pppa=mkPastPassPartForms ppp.ppps ppp.pppss ;
|
||||||
prtr=tr.prtr ;
|
prtr=tr.prtr ;
|
||||||
ptr=tr.ptr
|
ptr=tr.ptr
|
||||||
} ;
|
} ;
|
||||||
@@ -1110,8 +1120,8 @@ oper
|
|||||||
isg2=com + "ти";
|
isg2=com + "ти";
|
||||||
isg2refl=com + "тись";
|
isg2refl=com + "тись";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "тим"; -- incorrect, but prevents empty
|
prap=mkPresPartForms (com + "тящ");
|
||||||
pppss=com + "тим"; -- incorrect, but prevents empty
|
pppa=mkPastPassPartForms (com + "тим") (com + "тим");
|
||||||
prtr=com + "тя";
|
prtr=com + "тя";
|
||||||
ptr=com + "тев";
|
ptr=com + "тев";
|
||||||
asp=asp;
|
asp=asp;
|
||||||
@@ -1139,8 +1149,8 @@ oper
|
|||||||
isg2=com + "ги";
|
isg2=com + "ги";
|
||||||
isg2refl=com + "гись";
|
isg2refl=com + "гись";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "ган"; -- incorrect, but prevents parsing problems
|
prap=mkPresPartForms (com + "гущ");
|
||||||
pppss=com + "ган"; -- incorrect, but prevents parsing problems
|
pppa=mkPastPassPartForms (com + "ган") (com + "ган");
|
||||||
prtr=com + "жа"; -- *
|
prtr=com + "жа"; -- *
|
||||||
ptr=com + "жав";
|
ptr=com + "жав";
|
||||||
asp=asp;
|
asp=asp;
|
||||||
@@ -1168,8 +1178,8 @@ oper
|
|||||||
isg2=com + "шь";
|
isg2=com + "шь";
|
||||||
isg2refl=com + "шься";
|
isg2refl=com + "шься";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "денн"; -- *
|
prap=mkPresPartForms (com + "дящ");
|
||||||
pppss=com + "ден"; -- *
|
pppa=mkPastPassPartForms (com + "денн") (com + "ден");
|
||||||
prtr=com + "дя";
|
prtr=com + "дя";
|
||||||
ptr=com + "в";
|
ptr=com + "в";
|
||||||
asp=asp;
|
asp=asp;
|
||||||
@@ -1196,8 +1206,8 @@ oper
|
|||||||
isg2=com + "й";
|
isg2=com + "й";
|
||||||
isg2refl=com + "йся";
|
isg2refl=com + "йся";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "нн"; -- *
|
prap=mkPresPartForms (com + "ющ");
|
||||||
pppss=com + "н"; -- *
|
pppa=mkPastPassPartForms (com + "нн") (com + "н");
|
||||||
prtr=com + "вая";
|
prtr=com + "вая";
|
||||||
ptr=com + "в";
|
ptr=com + "в";
|
||||||
asp=asp;
|
asp=asp;
|
||||||
@@ -1225,8 +1235,8 @@ oper
|
|||||||
isg2=com + "удь";
|
isg2=com + "удь";
|
||||||
isg2refl=com + "удься";
|
isg2refl=com + "удься";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "ыт"; -- *
|
prap=mkPresPartForms (com + "ывающ");
|
||||||
pppss=com + "ыт"; -- *
|
pppa=mkPastPassPartForms (com + "ыт") (com + "ыт");
|
||||||
prtr=com + "ывая";
|
prtr=com + "ывая";
|
||||||
ptr=com + "ыв";
|
ptr=com + "ыв";
|
||||||
asp=asp;
|
asp=asp;
|
||||||
@@ -1255,8 +1265,8 @@ oper
|
|||||||
isg2=com + "ди";
|
isg2=com + "ди";
|
||||||
isg2refl=com + "дись";
|
isg2refl=com + "дись";
|
||||||
ipl1=[];
|
ipl1=[];
|
||||||
ppps=com + "денн"; -- *
|
prap=mkPresPartForms (com + "дущ");
|
||||||
pppss="com + ден"; -- *
|
pppa=mkPastPassPartForms (com + "денн") (com + "ден");
|
||||||
prtr=com + "дя";
|
prtr=com + "дя";
|
||||||
ptr=[];
|
ptr=[];
|
||||||
asp=asp;
|
asp=asp;
|
||||||
|
|||||||
@@ -121,7 +121,11 @@ lin
|
|||||||
fridge_N = mkN "холодильник" ;
|
fridge_N = mkN "холодильник" ;
|
||||||
friend_N = (mkNplus (mkN "друг" masculine inanimate "3c")) ** {pnom="друзья";pgen="друзей";pdat="друзьям";pacc="друзей";pins="друзьями";pprep="друзьях"};
|
friend_N = (mkNplus (mkN "друг" masculine inanimate "3c")) ** {pnom="друзья";pgen="друзей";pdat="друзьям";pacc="друзей";pins="друзьями";pprep="друзьях"};
|
||||||
fruit_N = mkN "фрукт" ;
|
fruit_N = mkN "фрукт" ;
|
||||||
full_A = (mkAplus (mkA "полный" "" "1*a/c'")) ** {sm="полон"} ;
|
full_A = let adj = mkAplus (mkA "полный" "" "1*a/c'")
|
||||||
|
in adj ** {short = table {
|
||||||
|
GSg Masc => "полон";
|
||||||
|
gn => adj.short ! gn
|
||||||
|
}} ;
|
||||||
fun_AV = (mkAltShort (mkA "весёлый" "" "1a/c'") (mkA "веселый")) ;
|
fun_AV = (mkAltShort (mkA "весёлый" "" "1a/c'") (mkA "веселый")) ;
|
||||||
garden_N = mkN "сад" ;
|
garden_N = mkN "сад" ;
|
||||||
girl_N = mkN "девочка" feminine animate "3*a";
|
girl_N = mkN "девочка" feminine animate "3*a";
|
||||||
@@ -142,7 +146,11 @@ lin
|
|||||||
head_N = mkN "голова" feminine inanimate "1f'";
|
head_N = mkN "голова" feminine inanimate "1f'";
|
||||||
hear_V2 = mkV2 (mkV imperfective "слушать" "слушаю");
|
hear_V2 = mkV2 (mkV imperfective "слушать" "слушаю");
|
||||||
heart_N = mkN "сердце" neuter inanimate "5*c" ;
|
heart_N = mkN "сердце" neuter inanimate "5*c" ;
|
||||||
heavy_A = (mkAltShort (mkA "тяжёлый" "тяжелее") (mkA "тяжелый")) ** {sm="тяжёл"} ; -- TODO: same
|
heavy_A = let adj = mkAltShort (mkA "тяжёлый" "тяжелее") (mkA "тяжелый")
|
||||||
|
in adj ** {short = table {
|
||||||
|
GSg Masc => "тяжёл" ; -- TODO: same
|
||||||
|
gn => adj.short ! gn
|
||||||
|
}} ;
|
||||||
hill_N = mkN "холм" ;
|
hill_N = mkN "холм" ;
|
||||||
hit_V2 = mkV2 (mkV imperfective "ударять" "ударяю" "ударяет") ;
|
hit_V2 = mkV2 (mkV imperfective "ударять" "ударяю" "ударяет") ;
|
||||||
hold_V2 = mkV2 (mkV imperfective "держать" "держу" "держит") ;
|
hold_V2 = mkV2 (mkV imperfective "держать" "держу" "держит") ;
|
||||||
@@ -254,7 +262,7 @@ lin
|
|||||||
science_N = mkN "наука" ;
|
science_N = mkN "наука" ;
|
||||||
scratch_V2 = mkV2 (mkV imperfective "чесать" "чешу" "чешет");
|
scratch_V2 = mkV2 (mkV imperfective "чесать" "чешу" "чешет");
|
||||||
sea_N = mkN "море" neuter inanimate "2c" (mkA "морской") ;
|
sea_N = mkN "море" neuter inanimate "2c" (mkA "морской") ;
|
||||||
see_V2 = (mkV2plus (mkV2 (mkV imperfective transitive "видеть" "вижу" "видит" "5a"))) ** {pppss="виден"; ppps="виденн"} ;
|
see_V2 = (mkV2plus (mkV2 (mkV imperfective transitive "видеть" "вижу" "видит" "5a"))) ** {pppa=mkPastPassPartForms "виденн" "виден"} ;
|
||||||
seed_N = mkN "семя" neuter inanimate "8°c" ;
|
seed_N = mkN "семя" neuter inanimate "8°c" ;
|
||||||
seek_V2 = mkV2 (mkV imperfective "искать" "ищу" "ищет");
|
seek_V2 = mkV2 (mkV imperfective "искать" "ищу" "ищет");
|
||||||
sell_V3 = tvDirDir (mkV imperfective "продавать" "продаю" "продаёт");
|
sell_V3 = tvDirDir (mkV imperfective "продавать" "продаю" "продаёт");
|
||||||
@@ -329,7 +337,11 @@ lin
|
|||||||
wait_V2 = mkV2 (mkV imperfective "ждать" "жду" "ждёт");
|
wait_V2 = mkV2 (mkV imperfective "ждать" "жду" "ждёт");
|
||||||
walk_V = mkV imperfective "гулять" "гуляю" "гуляет";
|
walk_V = mkV imperfective "гулять" "гуляю" "гуляет";
|
||||||
war_N = mkN "война" (mkA "военный") ;
|
war_N = mkN "война" (mkA "военный") ;
|
||||||
warm_A = (mkAltShort (mkA "тёплый" "теплее" "1*a/b") (mkA "теплый" "" "1*a/b")) ** {sm="тёплый"} ; -- workaround TODO: Any way to remove yo from stem?
|
warm_A = let adj = mkAltShort (mkA "тёплый" "теплее" "1*a/b") (mkA "теплый" "" "1*a/b")
|
||||||
|
in adj ** {short=table {
|
||||||
|
GSg Masc => "тёплый" ; -- workaround TODO: Any way to remove yo from stem?
|
||||||
|
gn => adj.short ! gn
|
||||||
|
}} ;
|
||||||
wash_V2 = mkV2 (mkV imperfective "мыть" "мою" "моет");
|
wash_V2 = mkV2 (mkV imperfective "мыть" "мою" "моет");
|
||||||
watch_V2 = mkV2 (mkV imperfective "смотреть" "смотрю" "смотрит");
|
watch_V2 = mkV2 (mkV imperfective "смотреть" "смотрю" "смотрит");
|
||||||
water_N = mkN "вода" feminine inanimate "1d'";
|
water_N = mkN "вода" feminine inanimate "1d'";
|
||||||
@@ -349,5 +361,9 @@ lin
|
|||||||
worm_N = mkN "червь" masculine animate ;
|
worm_N = mkN "червь" masculine animate ;
|
||||||
write_V2 = mkV2 (mkV imperfective "писать" "пишу" "пишет");
|
write_V2 = mkV2 (mkV imperfective "писать" "пишу" "пишет");
|
||||||
year_N = (mkNplus (mkN "год" (mkA "годовой"))) ** {sloc="году"; pgen="лет"};
|
year_N = (mkNplus (mkN "год" (mkA "годовой"))) ** {sloc="году"; pgen="лет"};
|
||||||
yellow_A = (mkAplus (mkA "жёлтый" "желтее" "1a/c''") ** {sf="желта"}) ; -- TODO: variants
|
yellow_A = let adj = mkAplus (mkA "жёлтый" "желтее" "1a/c''") -- TODO: variants
|
||||||
|
in adj ** {short = table {
|
||||||
|
GSg Fem => "желта" ;
|
||||||
|
gn => adj.short ! gn
|
||||||
|
}} ;
|
||||||
}
|
}
|
||||||
+10
-12
@@ -25,14 +25,14 @@ lin
|
|||||||
} ; -- Does NP need animacy?
|
} ; -- Does NP need animacy?
|
||||||
|
|
||||||
-- : Pron -> NP ;
|
-- : Pron -> NP ;
|
||||||
UsePron pron = lin NP (pronFormsPronoun pron) ;
|
UsePron pron = pronFormsPronoun pron ;
|
||||||
|
|
||||||
-- : Predet -> NP -> NP ; -- only the man
|
-- : Predet -> NP -> NP ; -- only the man
|
||||||
PredetNP predet np = np ** {s=\\cas => predet.s ! (agrGenNum np.a) ! Inanimate ! cas ++ np.s ! numSizeCase cas predet.size} ;
|
PredetNP predet np = np ** {s=\\cas => predet.s ! (agrGenNum np.a) ! Inanimate ! cas ++ np.s ! numSizeCase cas predet.size} ;
|
||||||
|
|
||||||
-- : NP -> V2 -> NP ; -- the man seen
|
-- : NP -> V2 -> NP ; -- the man seen
|
||||||
PPartNP np v2 = np ** {
|
PPartNP np v2 = np ** {
|
||||||
s = \\cas => np.s ! cas ++ (shortPastPassPart v2 (agrGenNum np.a))
|
s = \\cas => np.s ! cas ++ (pastPassPart v2).short ! (agrGenNum np.a)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : NP -> Adv -> NP ; -- Paris today
|
-- : NP -> Adv -> NP ; -- Paris today
|
||||||
@@ -97,7 +97,6 @@ lin
|
|||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s=\\g,anim,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! anim ! cas ++ num.s ! g ! anim ! cas ;
|
s=\\g,anim,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! anim ! cas ++ num.s ! g ! anim ! cas ;
|
||||||
type=quant.type ;
|
type=quant.type ;
|
||||||
g=quant.g ;
|
|
||||||
c=quant.c ;
|
c=quant.c ;
|
||||||
size=num.size
|
size=num.size
|
||||||
} ;
|
} ;
|
||||||
@@ -108,7 +107,6 @@ lin
|
|||||||
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas
|
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas
|
||||||
++ (adjFormsAdjective ord).s ! gennum g (animNumSizeNum Inanimate cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
++ (adjFormsAdjective ord).s ! gennum g (animNumSizeNum Inanimate cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
||||||
type=quant.type ;
|
type=quant.type ;
|
||||||
g=quant.g ;
|
|
||||||
c=quant.c ;
|
c=quant.c ;
|
||||||
size=num.size
|
size=num.size
|
||||||
} ;
|
} ;
|
||||||
@@ -123,10 +121,12 @@ lin
|
|||||||
|
|
||||||
-- : Numeral -> Ord ; -- fifty-first
|
-- : Numeral -> Ord ; -- fifty-first
|
||||||
OrdNumeral numeral = numeral.o ** {
|
OrdNumeral numeral = numeral.o ** {
|
||||||
sm=numeral.s ! Masc ! Inanimate ! Nom; -- these are not correct, but needed to prevent parsing problems
|
short = table { -- these are not correct, but needed to prevent parsing problems
|
||||||
sf=numeral.s ! Fem ! Inanimate ! Nom;
|
GSg Masc => numeral.s ! Masc ! Inanimate ! Nom;
|
||||||
sn=numeral.s ! Neut ! Inanimate ! Nom;
|
GSg Fem => numeral.s ! Fem ! Inanimate ! Nom;
|
||||||
sp=numeral.s ! Neut ! Inanimate ! Gen ;
|
GSg Neut => numeral.s ! Neut ! Inanimate ! Nom;
|
||||||
|
GPl => numeral.s ! Neut ! Inanimate ! Gen
|
||||||
|
} ;
|
||||||
comp=numeral.s ! Neut ! Inanimate ! Gen ;
|
comp=numeral.s ! Neut ! Inanimate ! Gen ;
|
||||||
p=False ;
|
p=False ;
|
||||||
preferShort=PreferFull
|
preferShort=PreferFull
|
||||||
@@ -167,10 +167,10 @@ lin
|
|||||||
UseN2 n = nounFormsNoun n ;
|
UseN2 n = nounFormsNoun n ;
|
||||||
|
|
||||||
-- : N3 -> N2 ; -- distance (from this city)
|
-- : N3 -> N2 ; -- distance (from this city)
|
||||||
Use2N3 n3 = lin N2 n3 ** { compl1 = n3.compl2 } ;
|
Use2N3 n3 = n3 ;
|
||||||
|
|
||||||
-- : N3 -> N2 ; -- distance (to Paris)
|
-- : N3 -> N2 ; -- distance (to Paris)
|
||||||
Use3N3 n3 = lin N2 n3 ;
|
Use3N3 n3 = n3 ;
|
||||||
|
|
||||||
|
|
||||||
-- : CN -> RS -> CN ; -- house that John bought
|
-- : CN -> RS -> CN ; -- house that John bought
|
||||||
@@ -230,7 +230,6 @@ lin
|
|||||||
type=EmptyDef ;
|
type=EmptyDef ;
|
||||||
short=\\a=>[] ;
|
short=\\a=>[] ;
|
||||||
c=Nom ;
|
c=Nom ;
|
||||||
size=Num1 ;
|
|
||||||
preferShort=PreferFull
|
preferShort=PreferFull
|
||||||
} ;
|
} ;
|
||||||
-- : Quant ; -- a (house), (houses)
|
-- : Quant ; -- a (house), (houses)
|
||||||
@@ -239,7 +238,6 @@ lin
|
|||||||
type=EmptyIndef ;
|
type=EmptyIndef ;
|
||||||
short=\\a=>[] ;
|
short=\\a=>[] ;
|
||||||
c=Nom ;
|
c=Nom ;
|
||||||
size=Num1 ;
|
|
||||||
preferShort=PreferFull
|
preferShort=PreferFull
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -405,8 +405,70 @@ lin pot3plus n m = {
|
|||||||
} ;
|
} ;
|
||||||
lin pot3as4 n = n ;
|
lin pot3as4 n = n ;
|
||||||
|
|
||||||
|
lin pot41 = {
|
||||||
|
s=\\g,a,c => million.s ! Sg ! c ;
|
||||||
|
o=pronounAdj1A "миллионный" ;
|
||||||
|
just1=True ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot4 n = {
|
||||||
|
s=\\g,a,c => n.s ! attr ! Masc ! a ! c
|
||||||
|
++ million.s ! animNumSizeNum Inanimate c n.size ! numSizeCase c n.size ;
|
||||||
|
o=prependPF (n.s ! attr ! Masc ! Inanimate ! Nom) (pronounAdj1A "миллионный") ;
|
||||||
|
just1=False ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot4plus n m = {
|
||||||
|
s=\\g,a,c => n.s ! attr ! Masc ! a ! c
|
||||||
|
++ million.s ! animNumSizeNum Inanimate c n.size ! numSizeCase c n.size
|
||||||
|
++ m.s ! g ! a ! c ;
|
||||||
|
o=m.o ;
|
||||||
|
just1=False ;
|
||||||
|
size=m.size
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot4decimal d = {
|
||||||
|
s=\\g,a,c => d.s ++ million.s ! Sg ! Gen ;
|
||||||
|
o=pronounAdj1A "миллионный" ;
|
||||||
|
just1=False ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
lin pot4as5 n = n ;
|
lin pot4as5 n = n ;
|
||||||
|
|
||||||
|
lin pot51 = {
|
||||||
|
s=\\g,a,c => milliard.s ! Sg ! c ;
|
||||||
|
o=pronounAdj1A "миллиардный" ;
|
||||||
|
just1=True ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot5 n = {
|
||||||
|
s=\\g,a,c => n.s ! attr ! Masc ! a ! c
|
||||||
|
++ milliard.s ! animNumSizeNum Inanimate c n.size ! numSizeCase c n.size ;
|
||||||
|
o=prependPF (n.s ! attr ! Masc ! Inanimate ! Nom) (pronounAdj1A "миллиардный") ;
|
||||||
|
just1=False ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot5plus n m = {
|
||||||
|
s=\\g,a,c => n.s ! attr ! Masc ! a ! c
|
||||||
|
++ milliard.s ! animNumSizeNum Inanimate c n.size ! numSizeCase c n.size
|
||||||
|
++ m.s ! g ! a ! c ;
|
||||||
|
o=m.o ;
|
||||||
|
just1=False ;
|
||||||
|
size=m.size
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin pot5decimal d = {
|
||||||
|
s=\\g,a,c => d.s ++ milliard.s ! Sg ! Gen ;
|
||||||
|
o=pronounAdj1A "миллиардный" ;
|
||||||
|
just1=False ;
|
||||||
|
size=Num5
|
||||||
|
} ;
|
||||||
|
|
||||||
-- numerals as sequences of digits
|
-- numerals as sequences of digits
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
@@ -416,11 +478,10 @@ lincat
|
|||||||
IDig d = d ** {tail = T1} ;
|
IDig d = d ** {tail = T1} ;
|
||||||
|
|
||||||
IIDig d i = {
|
IIDig d i = {
|
||||||
s = d.s ++ spaceIf i.tail ++ i.s ;
|
s = d.s ++ spaceIf i.tail ++ i.s ;
|
||||||
n = Pl ;
|
size = i.size ;
|
||||||
size = i.size ;
|
tail = inc i.tail
|
||||||
tail = inc i.tail
|
} ;
|
||||||
} ;
|
|
||||||
|
|
||||||
D_0 = mk2Dig "0" Num5 ;
|
D_0 = mk2Dig "0" Num5 ;
|
||||||
D_1 = mk4Dig "1" "1" Sg Num1 ; ----
|
D_1 = mk4Dig "1" "1" Sg Num1 ; ----
|
||||||
@@ -436,16 +497,14 @@ lincat
|
|||||||
PosDecimal d = d ** {hasDot=False} ;
|
PosDecimal d = d ** {hasDot=False} ;
|
||||||
NegDecimal d = {
|
NegDecimal d = {
|
||||||
s = "-" ++ BIND ++ d.s ;
|
s = "-" ++ BIND ++ d.s ;
|
||||||
n = Pl ;
|
size = NumAll ;
|
||||||
size = d.size ;
|
|
||||||
hasDot=False
|
hasDot=False
|
||||||
} ;
|
} ;
|
||||||
IFrac d i = {
|
IFrac d i = {
|
||||||
s=d.s ++
|
s=d.s ++
|
||||||
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++
|
if_then_Str d.hasDot BIND (BIND++"."++BIND) ++
|
||||||
i.s;
|
i.s;
|
||||||
n = Pl ;
|
size = NumAll ;
|
||||||
size = d.size ;
|
|
||||||
hasDot=True
|
hasDot=True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
+42
-20
@@ -207,7 +207,7 @@ oper
|
|||||||
infrefl = v.infrefl ++ s ;
|
infrefl = v.infrefl ++ s ;
|
||||||
prsg1 = v.prsg1 ++ s ;
|
prsg1 = v.prsg1 ++ s ;
|
||||||
prsg2 = v.prsg2 ++ s ;
|
prsg2 = v.prsg2 ++ s ;
|
||||||
prsg3 = v.prsg2 ++ s ;
|
prsg3 = v.prsg3 ++ s ;
|
||||||
prpl1 = v.prpl1 ++ s ;
|
prpl1 = v.prpl1 ++ s ;
|
||||||
prpl2 = v.prpl2 ++ s ;
|
prpl2 = v.prpl2 ++ s ;
|
||||||
prpl3 = v.prpl3 ++ s ;
|
prpl3 = v.prpl3 ++ s ;
|
||||||
@@ -216,8 +216,35 @@ oper
|
|||||||
isg2 = v.isg2 ++ s ;
|
isg2 = v.isg2 ++ s ;
|
||||||
ipl1 = v.ipl1 ++ s ;
|
ipl1 = v.ipl1 ++ s ;
|
||||||
isg2refl = v.isg2refl ++ s ;
|
isg2refl = v.isg2refl ++ s ;
|
||||||
ppps = v.ppps ++ s ;
|
prap = {msnom = v.prap.msnom ++ s ;
|
||||||
pppss = v.pppss ++ s ;
|
fsnom = v.prap.fsnom ++ s ;
|
||||||
|
nsnom = v.prap.nsnom ++ s ;
|
||||||
|
pnom = v.prap.pnom ++ s ;
|
||||||
|
msgen = v.prap.msgen ++ s ;
|
||||||
|
fsgen = v.prap.fsgen ++ s ;
|
||||||
|
pgen = v.prap.pgen ++ s ;
|
||||||
|
msdat = v.prap.msdat ++ s ;
|
||||||
|
fsacc = v.prap.fsacc ++ s ;
|
||||||
|
msins = v.prap.msins ++ s ;
|
||||||
|
fsins = v.prap.fsins ++ s ;
|
||||||
|
pins = v.prap.pins ++ s ;
|
||||||
|
msprep = v.prap.msprep ++ s
|
||||||
|
} ;
|
||||||
|
pppa = {msnom = v.pppa.msnom ++ s ;
|
||||||
|
fsnom = v.pppa.fsnom ++ s ;
|
||||||
|
nsnom = v.pppa.nsnom ++ s ;
|
||||||
|
pnom = v.pppa.pnom ++ s ;
|
||||||
|
msgen = v.pppa.msgen ++ s ;
|
||||||
|
fsgen = v.pppa.fsgen ++ s ;
|
||||||
|
pgen = v.pppa.pgen ++ s ;
|
||||||
|
msdat = v.pppa.msdat ++ s ;
|
||||||
|
fsacc = v.pppa.fsacc ++ s ;
|
||||||
|
msins = v.pppa.msins ++ s ;
|
||||||
|
fsins = v.pppa.fsins ++ s ;
|
||||||
|
pins = v.pppa.pins ++ s ;
|
||||||
|
msprep = v.pppa.msprep ++ s ;
|
||||||
|
short = \\gn => v.pppa.short ! gn ++ s
|
||||||
|
} ;
|
||||||
prtr = v.prtr ++ s ;
|
prtr = v.prtr ++ s ;
|
||||||
ptr = v.ptr ++ s
|
ptr = v.ptr ++ s
|
||||||
} ;
|
} ;
|
||||||
@@ -244,7 +271,7 @@ oper
|
|||||||
------------------------------
|
------------------------------
|
||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
nullPrep : Prep = lin Prep {s=[] ; c=Gen ; neggen=False ; hasPrep=False} ;
|
nullPrep : Prep = lin Prep {s=[] ; c=Gen ; hasPrep=False} ;
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : Str -> N
|
mkN : Str -> N
|
||||||
@@ -598,12 +625,7 @@ oper
|
|||||||
let refl = case v.refltran of {Refl => "ся" ; _ => ""} in
|
let refl = case v.refltran of {Refl => "ся" ; _ => ""} in
|
||||||
case <voice,t> of {
|
case <voice,t> of {
|
||||||
<Pass,Past|Cond> => lin A ( --# notpresent TODO: check
|
<Pass,Past|Cond> => lin A ( --# notpresent TODO: check
|
||||||
guessAdjectiveForms (v.ppps + "ый") ** { --# notpresent
|
guessAdjectiveForms v.pppa.msnom ** v.pppa --# notpresent
|
||||||
sm=v.pppss ; --# notpresent
|
|
||||||
sf=v.pppss + "а"; --# notpresent
|
|
||||||
sn=v.pppss + "о"; --# notpresent
|
|
||||||
sp=v.pppss + "ы" --# notpresent
|
|
||||||
} --# notpresent
|
|
||||||
) ;--# notpresent
|
) ;--# notpresent
|
||||||
<Pass,Pres> => lin A ( -- overgenerated
|
<Pass,Pres> => lin A ( -- overgenerated
|
||||||
let s : Str = case v.prpl1 of {
|
let s : Str = case v.prpl1 of {
|
||||||
@@ -677,26 +699,26 @@ oper
|
|||||||
|
|
||||||
mkV2 = overload {
|
mkV2 = overload {
|
||||||
mkV2 : V -> V2
|
mkV2 : V -> V2
|
||||||
= \vf -> lin V2 (vf ** {c={s=[] ; c=Acc ; neggen=True ; hasPrep=False}}) ;
|
= \vf -> lin V2 (vf ** {c={s=[] ; c=Acc ; hasPrep=False}}) ;
|
||||||
mkV2 : V -> Case -> V2
|
mkV2 : V -> Case -> V2
|
||||||
= \vf, c -> lin V2 (vf ** {c={s=[] ; c=c ; neggen=False ; hasPrep=False}}) ;
|
= \vf, c -> lin V2 (vf ** {c={s=[] ; c=c ; hasPrep=False}}) ;
|
||||||
mkV2 : V -> Prep -> V2
|
mkV2 : V -> Prep -> V2
|
||||||
= \vf, prep -> lin V2 (vf ** {c=prep}) ;
|
= \vf, prep -> lin V2 (vf ** {c=prep}) ;
|
||||||
|
|
||||||
-- For backwards compatibility:
|
-- For backwards compatibility:
|
||||||
mkV2 : V -> Str -> Case -> V2
|
mkV2 : V -> Str -> Case -> V2
|
||||||
= \vf, prep_s, c -> lin V2 (vf ** {c={s=prep_s ; c=c ; neggen=False ; hasPrep=True}})
|
= \vf, prep_s, c -> lin V2 (vf ** {c={s=prep_s ; c=c ; hasPrep=True}})
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkV3 = overload {
|
mkV3 = overload {
|
||||||
mkV3 : V -> Case -> Case -> V3 -- "сложить письмо в конверт"
|
mkV3 : V -> Case -> Case -> V3 -- "сложить письмо в конверт"
|
||||||
= \vf, cas1, cas2 -> lin V3 (vf ** {c={s=[] ; c=cas1 ; neggen=False ; hasPrep=False} ; c2={s=[] ; c=cas2 ; neggen=False ; hasPrep=False}} ) ;
|
= \vf, cas1, cas2 -> lin V3 (vf ** {c={s=[] ; c=cas1 ; hasPrep=False} ; c2={s=[] ; c=cas2 ; hasPrep=False}} ) ;
|
||||||
mkV3 : V -> Prep -> Prep -> V3 -- "сложить письмо в конверт"
|
mkV3 : V -> Prep -> Prep -> V3 -- "сложить письмо в конверт"
|
||||||
= \vf, prep1, prep2 -> lin V3 (vf ** {c=prep1 ; c2=prep2} ) ;
|
= \vf, prep1, prep2 -> lin V3 (vf ** {c=prep1 ; c2=prep2} ) ;
|
||||||
|
|
||||||
-- For backwards compatibility:
|
-- For backwards compatibility:
|
||||||
mkV3 : V -> Str -> Str -> Case -> Case -> V3
|
mkV3 : V -> Str -> Str -> Case -> Case -> V3
|
||||||
= \vf, prep1, prep2, cas1, cas2 -> lin V3 (vf ** {c={s=prep1 ; c=cas1 ; neggen=False ; hasPrep=True} ; c2={s=prep2 ; c=cas2 ; neggen=False ; hasPrep=True}} ) ;
|
= \vf, prep1, prep2, cas1, cas2 -> lin V3 (vf ** {c={s=prep1 ; c=cas1 ; hasPrep=True} ; c2={s=prep2 ; c=cas2 ; hasPrep=True}} ) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -711,25 +733,25 @@ oper
|
|||||||
mkV2V : V -> Prep -> V2V
|
mkV2V : V -> Prep -> V2V
|
||||||
= \v, prep -> lin V2V (v ** {c=prep}) ;
|
= \v, prep -> lin V2V (v ** {c=prep}) ;
|
||||||
mkV2V : V -> Str -> Case -> V2V
|
mkV2V : V -> Str -> Case -> V2V
|
||||||
= \v, prep, cas -> lin V2V (v ** {c={s=prep ; c=cas ; neggen=False ; hasPrep=True}}) ;
|
= \v, prep, cas -> lin V2V (v ** {c={s=prep ; c=cas ; hasPrep=True}}) ;
|
||||||
} ;
|
} ;
|
||||||
mkV2S = overload {
|
mkV2S = overload {
|
||||||
mkV2S : V -> Prep -> V2S
|
mkV2S : V -> Prep -> V2S
|
||||||
= \v, prep -> lin V2S (v ** {c=prep}) ;
|
= \v, prep -> lin V2S (v ** {c=prep}) ;
|
||||||
mkV2S : V -> Str -> Case -> V2S
|
mkV2S : V -> Str -> Case -> V2S
|
||||||
= \v, prep, cas -> lin V2S (v ** {c={s=prep ; c=cas ; neggen=False ; hasPrep=True}}) ;
|
= \v, prep, cas -> lin V2S (v ** {c={s=prep ; c=cas ; hasPrep=True}}) ;
|
||||||
} ;
|
} ;
|
||||||
mkV2Q = overload {
|
mkV2Q = overload {
|
||||||
mkV2Q : V -> Prep -> V2Q
|
mkV2Q : V -> Prep -> V2Q
|
||||||
= \v, prep -> lin V2Q (v ** {c=prep}) ;
|
= \v, prep -> lin V2Q (v ** {c=prep}) ;
|
||||||
mkV2Q : V -> Str -> Case -> V2Q
|
mkV2Q : V -> Str -> Case -> V2Q
|
||||||
= \v, prep, cas -> lin V2Q (v ** {c={s=prep ; c=cas ; neggen=False ; hasPrep=True}}) ;
|
= \v, prep, cas -> lin V2Q (v ** {c={s=prep ; c=cas ; hasPrep=True}}) ;
|
||||||
} ;
|
} ;
|
||||||
mkV2A = overload {
|
mkV2A = overload {
|
||||||
mkV2A : V -> Prep -> V2A
|
mkV2A : V -> Prep -> V2A
|
||||||
= \v, prep -> lin V2A (v ** {c=prep}) ;
|
= \v, prep -> lin V2A (v ** {c=prep}) ;
|
||||||
mkV2A : V -> Str -> Case -> V2A
|
mkV2A : V -> Str -> Case -> V2A
|
||||||
= \v, prep, cas -> lin V2A (v ** {c={s=prep ; c=cas ; neggen=False ; hasPrep=True}}) ;
|
= \v, prep, cas -> lin V2A (v ** {c={s=prep ; c=cas ; hasPrep=True}}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
@@ -766,7 +788,7 @@ oper
|
|||||||
= \s -> lin Interj {s = s} ;
|
= \s -> lin Interj {s = s} ;
|
||||||
|
|
||||||
mkPrep : Str -> Case -> Prep
|
mkPrep : Str -> Case -> Prep
|
||||||
= \s,c -> lin Prep {s = s ; c = c ; neggen = False ; hasPrep = True} ;
|
= \s,c -> lin Prep {s = s ; c = c ; hasPrep = True} ;
|
||||||
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|||||||
+44
-3
@@ -75,9 +75,9 @@ oper
|
|||||||
fsacc, -- amsacc = msgen, imsacc = msnom, nsacc = nsnom
|
fsacc, -- amsacc = msgen, imsacc = msnom, nsacc = nsnom
|
||||||
msins, fsins, pins, -- nsins = msins, pdat = msins ; there is also variant fsins == fsgen
|
msins, fsins, pins, -- nsins = msins, pdat = msins ; there is also variant fsins == fsgen
|
||||||
msprep, -- nsprep = msprep, fsprep = fsgen, msloc = msprep
|
msprep, -- nsprep = msprep, fsprep = fsgen, msloc = msprep
|
||||||
sm, sf, sn, sp, -- short forms
|
|
||||||
comp -- comparative variants
|
comp -- comparative variants
|
||||||
: Str ;
|
: Str ;
|
||||||
|
short : GenNum => Str ; -- short forms
|
||||||
p : Bool ;
|
p : Bool ;
|
||||||
preferShort : ShortFormPreference
|
preferShort : ShortFormPreference
|
||||||
} ;
|
} ;
|
||||||
@@ -93,6 +93,27 @@ oper
|
|||||||
: Str ;
|
: Str ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
PresPartForms : Type = {
|
||||||
|
msnom, fsnom, nsnom, pnom, -- pvoc = pnom
|
||||||
|
msgen, fsgen, pgen, -- nsgen = msgen ; ploc = pprep = pgen = pptv (?)
|
||||||
|
msdat, -- nsdat = msdat ; fsdat = fsgen
|
||||||
|
fsacc, -- amsacc = msgen, imsacc = msnom, nsacc = nsnom
|
||||||
|
msins, fsins, pins, -- nsins = msins, pdat = msins ; there is also variant fsins == fsgen
|
||||||
|
msprep -- nsprep = msprep, fsprep = fsgen, msloc = msprep
|
||||||
|
: Str ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PastPartForms : Type = {
|
||||||
|
msnom, fsnom, nsnom, pnom, -- pvoc = pnom
|
||||||
|
msgen, fsgen, pgen, -- nsgen = msgen ; ploc = pprep = pgen = pptv (?)
|
||||||
|
msdat, -- nsdat = msdat ; fsdat = fsgen
|
||||||
|
fsacc, -- amsacc = msgen, imsacc = msnom, nsacc = nsnom
|
||||||
|
msins, fsins, pins, -- nsins = msins, pdat = msins ; there is also variant fsins == fsgen
|
||||||
|
msprep -- nsprep = msprep, fsprep = fsgen, msloc = msprep
|
||||||
|
: Str ;
|
||||||
|
short : GenNum => Str ; -- short forms
|
||||||
|
} ;
|
||||||
|
|
||||||
ConjType = Predef.Ints 16 ; -- Conjugation type
|
ConjType = Predef.Ints 16 ; -- Conjugation type
|
||||||
TempParts = {p1: Str; p2: Str} ;
|
TempParts = {p1: Str; p2: Str} ;
|
||||||
VerbForms : Type = {
|
VerbForms : Type = {
|
||||||
@@ -100,18 +121,38 @@ oper
|
|||||||
prsg1, prsg2, prsg3, prpl1, prpl2, prpl3,
|
prsg1, prsg2, prsg3, prpl1, prpl2, prpl3,
|
||||||
psgm, psgs,
|
psgm, psgs,
|
||||||
isg2, ipl1, isg2refl,
|
isg2, ipl1, isg2refl,
|
||||||
ppps, -- past passive participle, stem
|
|
||||||
pppss, -- past passive participle, short stem
|
|
||||||
prtr, ptr -- present and past transgressives (converbs)
|
prtr, ptr -- present and past transgressives (converbs)
|
||||||
: Str ;
|
: Str ;
|
||||||
fut : SpecialFuture ;
|
fut : SpecialFuture ;
|
||||||
asp : Aspect ;
|
asp : Aspect ;
|
||||||
refltran : ReflTran ;
|
refltran : ReflTran ;
|
||||||
|
prap : PresPartForms ; -- present active participle
|
||||||
|
pppa : PastPartForms ; -- past passive participle
|
||||||
} ;
|
} ;
|
||||||
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
||||||
VerbForms2 : Type = VerbForms ** {c : ComplementCase} ;
|
VerbForms2 : Type = VerbForms ** {c : ComplementCase} ;
|
||||||
VerbForms3 : Type = VerbForms ** {c : ComplementCase ; c2 : ComplementCase} ;
|
VerbForms3 : Type = VerbForms ** {c : ComplementCase ; c2 : ComplementCase} ;
|
||||||
|
|
||||||
|
mkPresPartForms : Str -> PresPartForms = \s -> {
|
||||||
|
msnom=s+"ий"; fsnom=s+"ая"; nsnom=s+"ее"; pnom=s+"ие";
|
||||||
|
msgen=s+"его"; fsgen=s+"ей"; pgen=s+"их"; msdat=s+"ему";
|
||||||
|
fsacc=s+"ую"; msins=s+"им"; fsins=s+"ей"; pins=s+"ими";
|
||||||
|
msprep=s+"ем"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPastPassPartForms : Str -> Str -> PastPartForms = \s,ss -> {
|
||||||
|
msnom=s+"ый"; fsnom=s+"ая"; nsnom=s+"ое"; pnom=s+"ые";
|
||||||
|
msgen=s+"ого"; fsgen=s+"ой"; pgen=s+"ых"; msdat=s+"ому";
|
||||||
|
fsacc=s+"ую"; msins=s+"ым"; fsins=s+"ой"; pins=s+"ыми";
|
||||||
|
msprep=s+"ом";
|
||||||
|
short = table {
|
||||||
|
GSg Masc => ss;
|
||||||
|
GSg Fem => ss+"а";
|
||||||
|
GSg Neut => ss+"о";
|
||||||
|
GPl => ss+"ы"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
reflTran : Reflexivity -> Transitivity -> ReflTran = \r,t ->
|
reflTran : Reflexivity -> Transitivity -> ReflTran = \r,t ->
|
||||||
case <r,t> of {
|
case <r,t> of {
|
||||||
<Reflexive,_> => Refl ;
|
<Reflexive,_> => Refl ;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ flags optimize=all_subs ; coding=utf8 ;
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
-- : Cl -> QCl ; -- does John walk
|
-- : Cl -> QCl ; -- does John walk
|
||||||
QuestCl cl = cl ** {qf=QDir} ;
|
QuestCl cl = cl ;
|
||||||
|
|
||||||
-- : IP -> VP -> QCl ; -- who walks
|
-- : IP -> VP -> QCl ; -- who walks
|
||||||
QuestVP ip vp = {
|
QuestVP ip vp = {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : RP ; -- which
|
-- : RP ; -- which
|
||||||
IdRP = lin RP (doKotoryjPron "который" (Ag (GSg Neut) P3)) ;
|
IdRP = doKotoryjPron "который" (Ag (GSg Neut) P3) ;
|
||||||
|
|
||||||
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||||
FunRP prep np rp = {
|
FunRP prep np rp = {
|
||||||
|
|||||||
+102
-91
@@ -213,7 +213,7 @@ oper
|
|||||||
ComplTable = Polarity => Agr => Str ;
|
ComplTable = Polarity => Agr => Str ;
|
||||||
PolarityTable = Polarity => Str ;
|
PolarityTable = Polarity => Str ;
|
||||||
|
|
||||||
from2 = {s="из" ; c=Gen ; neggen=True ; hasPrep=True} ;
|
from2 = {s="из" ; c=Gen ; hasPrep=True} ;
|
||||||
|
|
||||||
mkCompoundN : NounForms -> Str -> NounForms -> NounForms
|
mkCompoundN : NounForms -> Str -> NounForms -> NounForms
|
||||||
= \n1,link,n2 ->
|
= \n1,link,n2 ->
|
||||||
@@ -244,16 +244,18 @@ oper
|
|||||||
|
|
||||||
Adjective : Type = {
|
Adjective : Type = {
|
||||||
s : AdjTable ;
|
s : AdjTable ;
|
||||||
short : AgrTable ;
|
short : GenNum => Str ;
|
||||||
preferShort : ShortFormPreference
|
preferShort : ShortFormPreference
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
pronToAdj : PronForms -> AdjForms
|
pronToAdj : PronForms -> AdjForms
|
||||||
= \base -> base ** {
|
= \base -> base ** {
|
||||||
sm = base.msnom ; -- these are incorrect, but empty causes parsing problems
|
short = table {
|
||||||
sf = base.fsnom ;
|
GSg Masc => base.msnom ; -- these are incorrect, but empty causes parsing problems
|
||||||
sn = base.nsnom ;
|
GSg Fem => base.fsnom ;
|
||||||
sp = base.pnom ;
|
GSg Neut => base.nsnom ;
|
||||||
|
GPl => base.pnom
|
||||||
|
} ;
|
||||||
comp = base.nsnom ;
|
comp = base.nsnom ;
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
p = False
|
p = False
|
||||||
@@ -266,15 +268,12 @@ oper
|
|||||||
|
|
||||||
mkAltShort : AdjForms -> AdjForms -> AdjForms
|
mkAltShort : AdjForms -> AdjForms -> AdjForms
|
||||||
= \full, short -> full ** {
|
= \full, short -> full ** {
|
||||||
sm = short.sm ;
|
short = short.short
|
||||||
sf = short.sf ;
|
|
||||||
sn = short.sn ;
|
|
||||||
sp = short.sp
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
adjFormsAdjective : AdjForms -> Adjective
|
adjFormsAdjective : AdjForms -> Adjective
|
||||||
= \forms -> {
|
= \forms -> {
|
||||||
short = adjFormsToShort forms ;
|
short = forms.short ;
|
||||||
s = table {
|
s = table {
|
||||||
GSg Fem => table {
|
GSg Fem => table {
|
||||||
(Inanimate|Animate) => table {
|
(Inanimate|Animate) => table {
|
||||||
@@ -351,8 +350,6 @@ oper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
g = forms.g ;
|
|
||||||
-- a = forms.a ;
|
|
||||||
preferShort = forms.preferShort
|
preferShort = forms.preferShort
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -424,12 +421,8 @@ oper
|
|||||||
fsins = the_most.fsins ++ af.fsins ;
|
fsins = the_most.fsins ++ af.fsins ;
|
||||||
pins = the_most.pins ++ af.pins ;
|
pins = the_most.pins ++ af.pins ;
|
||||||
msprep= the_most.msprep ++ af.msprep;
|
msprep= the_most.msprep ++ af.msprep;
|
||||||
sm = the_most.sm ++ af.sm ;
|
short = \\gn => the_most.short ! gn ++ af.short ! gn ;
|
||||||
sf = the_most.sf ++ af.sf ;
|
|
||||||
sn = the_most.sn ++ af.sn ;
|
|
||||||
sp = the_most.sp ++ af.sp ;
|
|
||||||
comp = the_most.comp ++ af.comp ;
|
comp = the_most.comp ++ af.comp ;
|
||||||
g=af.g ;
|
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
p = af.p
|
p = af.p
|
||||||
} ;
|
} ;
|
||||||
@@ -449,12 +442,13 @@ oper
|
|||||||
fsins = pf.fsins ++ the_most.fsins ++ af.fsins ;
|
fsins = pf.fsins ++ the_most.fsins ++ af.fsins ;
|
||||||
pins = pf.pins ++ the_most.pins ++ af.pins ;
|
pins = pf.pins ++ the_most.pins ++ af.pins ;
|
||||||
msprep= pf.msprep++ the_most.msprep ++ af.msprep;
|
msprep= pf.msprep++ the_most.msprep ++ af.msprep;
|
||||||
sm = pf.msnom ++ the_most.sm ++ af.sm ;
|
short = table {
|
||||||
sf = pf.fsnom ++ the_most.sf ++ af.sf ;
|
GSg Masc => pf.msnom ++ the_most.short ! (GSg Masc) ++ af.short ! (GSg Masc) ;
|
||||||
sn = pf.nsnom ++ the_most.sn ++ af.sn ;
|
GSg Fem => pf.fsnom ++ the_most.short ! (GSg Fem) ++ af.short ! (GSg Fem) ;
|
||||||
sp = pf.pnom ++ the_most.sp ++ af.sp ;
|
GSg Neut => pf.nsnom ++ the_most.short ! (GSg Neut) ++ af.short ! (GSg Neut) ;
|
||||||
|
GPl => pf.pnom ++ the_most.short ! GPl ++ af.short ! GPl
|
||||||
|
} ;
|
||||||
comp = pf.msnom ++ the_most.comp ++ af.comp ;
|
comp = pf.msnom ++ the_most.comp ++ af.comp ;
|
||||||
g=af.g ;
|
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
p = af.p
|
p = af.p
|
||||||
} ;
|
} ;
|
||||||
@@ -565,36 +559,25 @@ oper
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
adjFormsToShort : AdjForms -> AgrTable
|
|
||||||
= \af -> table {
|
|
||||||
Ag (GSg Fem) _ => af.sf ;
|
|
||||||
Ag (GSg Masc) _ => af.sm ;
|
|
||||||
Ag (GSg Neut) _ => af.sn ;
|
|
||||||
Ag GPl _ => af.sp
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkCompoundA : AdjForms -> Str -> AdjForms -> AdjForms
|
mkCompoundA : AdjForms -> Str -> AdjForms -> AdjForms
|
||||||
= \a1,link,a2 ->
|
= \a1,link,a2 ->
|
||||||
let l : Str=case link of {x+"-" => BIND ++ "-" ++ BIND ; _ => link} in
|
let l : Str=case link of {x+"-" => BIND ++ "-" ++ BIND ; _ => link} in
|
||||||
a2 ** {
|
a2 ** {
|
||||||
msnom = a1.sn ++ l ++ a2.msnom ;
|
msnom = a1.short ! GSg Neut ++ l ++ a2.msnom ;
|
||||||
fsnom = a1.sn ++ l ++ a2.fsnom ;
|
fsnom = a1.short ! GSg Neut ++ l ++ a2.fsnom ;
|
||||||
nsnom = a1.sn ++ l ++ a2.nsnom ;
|
nsnom = a1.short ! GSg Neut ++ l ++ a2.nsnom ;
|
||||||
pnom = a1.sn ++ l ++ a2.pnom ;
|
pnom = a1.short ! GSg Neut ++ l ++ a2.pnom ;
|
||||||
msgen = a1.sn ++ l ++ a2.msgen ;
|
msgen = a1.short ! GSg Neut ++ l ++ a2.msgen ;
|
||||||
fsgen = a1.sn ++ l ++ a2.fsgen ;
|
fsgen = a1.short ! GSg Neut ++ l ++ a2.fsgen ;
|
||||||
pgen = a1.sn ++ l ++ a2.pgen ;
|
pgen = a1.short ! GSg Neut ++ l ++ a2.pgen ;
|
||||||
msdat = a1.sn ++ l ++ a2.msdat ;
|
msdat = a1.short ! GSg Neut ++ l ++ a2.msdat ;
|
||||||
fsacc = a1.sn ++ l ++ a2.fsacc ;
|
fsacc = a1.short ! GSg Neut ++ l ++ a2.fsacc ;
|
||||||
msins = a1.sn ++ l ++ a2.msins ;
|
msins = a1.short ! GSg Neut ++ l ++ a2.msins ;
|
||||||
fsins = a1.sn ++ l ++ a2.fsins ;
|
fsins = a1.short ! GSg Neut ++ l ++ a2.fsins ;
|
||||||
pins = a1.sn ++ l ++ a2.pins ;
|
pins = a1.short ! GSg Neut ++ l ++ a2.pins ;
|
||||||
msprep= a1.sn ++ l ++ a2.msprep;
|
msprep= a1.short ! GSg Neut ++ l ++ a2.msprep;
|
||||||
sm = a1.sn ++ l ++ a2.sm ;
|
short = \\gn => a1.short ! GSg Neut ++ l ++ a2.short ! gn ;
|
||||||
sf = a1.sn ++ l ++ a2.sf ;
|
comp = a1.short ! GSg Neut ++ l ++ a2.comp ;
|
||||||
sn = a1.sn ++ l ++ a2.sn ;
|
|
||||||
sp = a1.sn ++ l ++ a2.sp ;
|
|
||||||
comp = a1.sn ++ l ++ a2.comp ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -646,17 +629,17 @@ oper
|
|||||||
compl2 = \\p,a => case p of {
|
compl2 = \\p,a => case p of {
|
||||||
Pos => case ap.preferShort of {
|
Pos => case ap.preferShort of {
|
||||||
PreferFull => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! slash.c.c ;
|
PreferFull => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! slash.c.c ;
|
||||||
PrefShort => slash.compl2 ! p ! a ++ ap.short ! a
|
PrefShort => slash.compl2 ! p ! a ++ ap.short ! agrGenNum a
|
||||||
} ;
|
} ;
|
||||||
Neg => case ap.preferShort of {
|
Neg => case ap.preferShort of {
|
||||||
PreferFull => case neggen slash.c of {
|
PreferFull => case neggen slash.c of {
|
||||||
False => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! slash.c.c ;
|
False => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! slash.c.c ;
|
||||||
True => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! Gen
|
True => slash.compl2 ! p ! a ++ ap.s ! agrGenNum a ! Animate ! Gen
|
||||||
} ;
|
} ;
|
||||||
PrefShort => slash.compl2 ! p ! a ++ ap.short ! a
|
PrefShort => slash.compl2 ! p ! a ++ ap.short ! agrGenNum a
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
c = {s="" ; c=Acc ; neggen=True ; hasPrep=False};
|
c = {s="" ; c=Acc ; hasPrep=False};
|
||||||
dep = slash.dep ;
|
dep = slash.dep ;
|
||||||
isSimple = False ;
|
isSimple = False ;
|
||||||
p = slash.p
|
p = slash.p
|
||||||
@@ -729,17 +712,21 @@ oper
|
|||||||
_ => passivateNonReflexive vf
|
_ => passivateNonReflexive vf
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
shortPastPassPart : VerbForms -> GenNum -> Str
|
presActPart : VerbForms -> Adjective =
|
||||||
= \vf,gn ->
|
\v -> adjFormsAdjective (v.prap ** {
|
||||||
case vf.refltran of {
|
short = table {
|
||||||
Trans => case <vf.fut,gn> of {
|
GSg Masc => v.prap.msnom;
|
||||||
<NormalFuture,GSg Masc> => vf.pppss ;
|
GSg Fem => v.prap.fsnom;
|
||||||
<NormalFuture,GSg Fem> => vf.pppss ++ BIND ++ "а" ;
|
GSg Neut => v.prap.nsnom;
|
||||||
<NormalFuture,GSg Neut> => vf.pppss ++ BIND ++ "о" ;
|
GPl => v.prap.pnom
|
||||||
<NormalFuture,GPl> => vf.pppss ++ BIND ++ "ы" ;
|
} ;
|
||||||
_ => vf.pppss } ;
|
comp = [] ;
|
||||||
_ => variants {}
|
p = False ;
|
||||||
} ;
|
preferShort = PreferFull
|
||||||
|
}) ;
|
||||||
|
|
||||||
|
pastPassPart : VerbForms -> Adjective =
|
||||||
|
\v -> adjFormsAdjective (v.pppa ** {comp = []; p = False ; preferShort = PreferFull}) ;
|
||||||
|
|
||||||
copula : VerbForms
|
copula : VerbForms
|
||||||
= {
|
= {
|
||||||
@@ -757,8 +744,8 @@ oper
|
|||||||
isg2="будь";
|
isg2="будь";
|
||||||
isg2refl="явись" ; -- ?
|
isg2refl="явись" ; -- ?
|
||||||
ipl1="давайте будем";
|
ipl1="давайте будем";
|
||||||
ppps="явленн"; --*
|
prap=mkPresPartForms "являющ";
|
||||||
pppss="явлен"; --*
|
pppa=mkPastPassPartForms "явленн" "явлен";
|
||||||
prtr="будучи";
|
prtr="будучи";
|
||||||
ptr="быв";
|
ptr="быв";
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
@@ -822,8 +809,8 @@ oper
|
|||||||
isg2refl="будь способны" ; -- *
|
isg2refl="будь способны" ; -- *
|
||||||
isg2="будь способен"; -- some improvisation here
|
isg2="будь способен"; -- some improvisation here
|
||||||
ipl1="давайте будем способны"; -- maybe, special like for future?
|
ipl1="давайте будем способны"; -- maybe, special like for future?
|
||||||
ppps=""; --*
|
prap=mkPresPartForms "могущ";
|
||||||
pppss=""; --*
|
pppa=mkPastPassPartForms "" "";
|
||||||
prtr="могши"; --*
|
prtr="могши"; --*
|
||||||
ptr="могши";
|
ptr="могши";
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
@@ -846,8 +833,8 @@ oper
|
|||||||
isg2="желай";
|
isg2="желай";
|
||||||
isg2refl="желайся" ;
|
isg2refl="желайся" ;
|
||||||
ipl1="давайте будем хотеть";
|
ipl1="давайте будем хотеть";
|
||||||
ppps="хотим"; -- *
|
prap=mkPresPartForms "хотящ";
|
||||||
pppss="хотим"; -- *
|
pppa=mkPastPassPartForms "хотим" "хотим";
|
||||||
prtr="хотя";
|
prtr="хотя";
|
||||||
ptr="хотев";
|
ptr="хотев";
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
@@ -860,10 +847,11 @@ oper
|
|||||||
prsg1, prsg2, prsg3, prpl1, prpl2, prpl3,
|
prsg1, prsg2, prsg3, prpl1, prpl2, prpl3,
|
||||||
psgm, psgs,
|
psgm, psgs,
|
||||||
isg2, isg2refl, ipl1,
|
isg2, isg2refl, ipl1,
|
||||||
ppps, pppss,
|
|
||||||
prtr, ptr ="";
|
prtr, ptr ="";
|
||||||
fut=NullFuture ;
|
fut=NullFuture ;
|
||||||
asp=Imperfective;
|
asp=Imperfective;
|
||||||
|
prap=mkPresPartForms "";
|
||||||
|
pppa=mkPastPassPartForms "" "";
|
||||||
refltran = Trans ; -- used to be refl=NonReflexive; tran=Transitive
|
refltran = Trans ; -- used to be refl=NonReflexive; tran=Transitive
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -1306,10 +1294,10 @@ oper
|
|||||||
= \ch, a, anim -> { -- "ч", "нич"
|
= \ch, a, anim -> { -- "ч", "нич"
|
||||||
a = a ;
|
a = a ;
|
||||||
anim=anim ;
|
anim=anim ;
|
||||||
nom, voc = ch + "то" ;
|
nom = ch + "то" ;
|
||||||
gen, acc, ptv = ch + "его" ;
|
gen, acc = ch + "его" ;
|
||||||
dat = ch + "ему" ;
|
dat = ch + "ему" ;
|
||||||
prep, loc = ch + "ём" ;
|
prep = ch + "ём" ;
|
||||||
ins = ch + "ем" ;
|
ins = ch + "ем" ;
|
||||||
poss = {
|
poss = {
|
||||||
msnom = ch + "ей" ;
|
msnom = ch + "ей" ;
|
||||||
@@ -1333,10 +1321,10 @@ oper
|
|||||||
let subPoss = (Predef.tk 1 ch) + "ч" in {
|
let subPoss = (Predef.tk 1 ch) + "ч" in {
|
||||||
a = a ;
|
a = a ;
|
||||||
anim=anim ;
|
anim=anim ;
|
||||||
nom, voc = ch + "то" ;
|
nom = ch + "то" ;
|
||||||
gen, acc, ptv = ch + "ого" ;
|
gen, acc = ch + "ого" ;
|
||||||
dat = ch + "ому" ;
|
dat = ch + "ому" ;
|
||||||
prep, loc = ch + "ом" ;
|
prep = ch + "ом" ;
|
||||||
ins = ch + "ем" ;
|
ins = ch + "ем" ;
|
||||||
poss = (doChPron subPoss a anim).poss
|
poss = (doChPron subPoss a anim).poss
|
||||||
} ;
|
} ;
|
||||||
@@ -1414,9 +1402,6 @@ oper
|
|||||||
pacc=n.s ! Pl ! Acc ;
|
pacc=n.s ! Pl ! Acc ;
|
||||||
pins=n.s ! Pl ! Ins ;
|
pins=n.s ! Pl ! Ins ;
|
||||||
pprep=n.s ! Pl ! Pre ;
|
pprep=n.s ! Pl ! Pre ;
|
||||||
ploc=n.s ! Pl ! Loc ;
|
|
||||||
pptv=n.s ! Pl ! Ptv ;
|
|
||||||
pvoc=n.s ! Pl ! VocRus ;
|
|
||||||
g=n.g ;
|
g=n.g ;
|
||||||
mayben=n.mayben ;
|
mayben=n.mayben ;
|
||||||
anim=n.anim ;
|
anim=n.anim ;
|
||||||
@@ -1466,15 +1451,21 @@ oper
|
|||||||
pins = "тех" ;
|
pins = "тех" ;
|
||||||
msprep = "том" ;
|
msprep = "том" ;
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
|
short = table {
|
||||||
|
GSg Masc => "тот" ;
|
||||||
|
GSg Fem => "та" ;
|
||||||
|
GSg Neut => "то" ;
|
||||||
|
GPl => "те"
|
||||||
|
} ;
|
||||||
comp = [] ;
|
comp = [] ;
|
||||||
p = False
|
p = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
this_forms = {
|
this_forms = {
|
||||||
msnom, sm = "этот" ;
|
msnom = "этот" ;
|
||||||
fsnom, sf = "эта" ;
|
fsnom = "эта" ;
|
||||||
nsnom, sn = "это" ;
|
nsnom = "это" ;
|
||||||
pnom, sp = "эти" ;
|
pnom = "эти" ;
|
||||||
msgen = "этого" ;
|
msgen = "этого" ;
|
||||||
fsgen = "этой" ;
|
fsgen = "этой" ;
|
||||||
pgen = "этих" ;
|
pgen = "этих" ;
|
||||||
@@ -1485,15 +1476,21 @@ oper
|
|||||||
pins = "этими" ;
|
pins = "этими" ;
|
||||||
msprep = "этом" ;
|
msprep = "этом" ;
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
|
short = table {
|
||||||
|
GSg Masc => "этот" ;
|
||||||
|
GSg Fem => "эта" ;
|
||||||
|
GSg Neut => "это" ;
|
||||||
|
GPl => "эти"
|
||||||
|
} ;
|
||||||
comp = [] ;
|
comp = [] ;
|
||||||
p = False
|
p = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
a_forms = { -- this pronoun is an approximate translation of indef article; preventing DetNP parsing problems
|
a_forms = { -- this pronoun is an approximate translation of indef article; preventing DetNP parsing problems
|
||||||
msnom, sm = "некий" ;
|
msnom = "некий" ;
|
||||||
fsnom, sf = "некая" ;
|
fsnom = "некая" ;
|
||||||
nsnom, sn = "некое" ;
|
nsnom = "некое" ;
|
||||||
pnom, sp = "некие" ;
|
pnom = "некие" ;
|
||||||
msgen = "некого" ;
|
msgen = "некого" ;
|
||||||
fsgen = "некой" ;
|
fsgen = "некой" ;
|
||||||
pgen = "неких" ;
|
pgen = "неких" ;
|
||||||
@@ -1504,6 +1501,12 @@ oper
|
|||||||
pins = "неким" ;
|
pins = "неким" ;
|
||||||
msprep = "некой" ;
|
msprep = "некой" ;
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
|
short = table {
|
||||||
|
GSg Masc => "некий" ;
|
||||||
|
GSg Fem => "некая" ;
|
||||||
|
GSg Neut => "некое" ;
|
||||||
|
GPl => "некие"
|
||||||
|
} ;
|
||||||
comp = [] ;
|
comp = [] ;
|
||||||
p = False
|
p = False
|
||||||
} ;
|
} ;
|
||||||
@@ -1540,6 +1543,12 @@ oper
|
|||||||
pins = "данных" ;
|
pins = "данных" ;
|
||||||
msprep = "данном" ;
|
msprep = "данном" ;
|
||||||
preferShort = PreferFull ;
|
preferShort = PreferFull ;
|
||||||
|
short = table {
|
||||||
|
GSg Masc => "данный" ;
|
||||||
|
GSg Fem => "данная" ;
|
||||||
|
GSg Neut => "данное" ;
|
||||||
|
GPl => "данные"
|
||||||
|
} ;
|
||||||
comp = [] ;
|
comp = [] ;
|
||||||
p = False
|
p = False
|
||||||
} ;
|
} ;
|
||||||
@@ -1568,6 +1577,8 @@ param DForm = unit | teen | ten | hund ;
|
|||||||
param Place = attr | indep ;
|
param Place = attr | indep ;
|
||||||
oper
|
oper
|
||||||
mille : Noun = nounFormsNoun ((guessNounForms "тысяча" (doGuessAdjectiveForms "тысячный") AdjType) ** {sins=variants {"тысячей" ; "тысячью"}});
|
mille : Noun = nounFormsNoun ((guessNounForms "тысяча" (doGuessAdjectiveForms "тысячный") AdjType) ** {sins=variants {"тысячей" ; "тысячью"}});
|
||||||
|
million : Noun = nounFormsNoun (guessNounForms "миллион" (doGuessAdjectiveForms "миллионный") AdjType) ;
|
||||||
|
milliard : Noun = nounFormsNoun (guessNounForms "миллиард" (doGuessAdjectiveForms "миллиардный") AdjType) ;
|
||||||
|
|
||||||
ith_forms : Str -> AdjForms
|
ith_forms : Str -> AdjForms
|
||||||
= \s -> {
|
= \s -> {
|
||||||
@@ -1584,7 +1595,7 @@ oper
|
|||||||
fsins = s ++ BIND ++ "-й" ;
|
fsins = s ++ BIND ++ "-й" ;
|
||||||
pins = s ++ BIND ++ "-ми" ;
|
pins = s ++ BIND ++ "-ми" ;
|
||||||
msprep= s ++ BIND ++ "-м" ;
|
msprep= s ++ BIND ++ "-м" ;
|
||||||
sm, sf, sn, sp = s ;
|
short = \\_ => s ;
|
||||||
comp = s ++ BIND ++ "-е" ; --*
|
comp = s ++ BIND ++ "-е" ; --*
|
||||||
p = False ;
|
p = False ;
|
||||||
preferShort=PreferFull
|
preferShort=PreferFull
|
||||||
@@ -1689,7 +1700,7 @@ oper
|
|||||||
++ mfa.sacc ++ "," ++ ffa.sacc ++ "," ++ nfa.sacc ++ "," ++ mfa.pacc ++ ","
|
++ mfa.sacc ++ "," ++ ffa.sacc ++ "," ++ nfa.sacc ++ "," ++ mfa.pacc ++ ","
|
||||||
++ mf.sins ++ "," ++ ff.sins ++ "," ++ nf.sins ++ "," ++ mf.pins ++ ","
|
++ mf.sins ++ "," ++ ff.sins ++ "," ++ nf.sins ++ "," ++ mf.pins ++ ","
|
||||||
++ mf.sprep ++ "," ++ ff.sprep ++ "," ++ nf.sprep ++ "," ++ mf.pprep ++ ","
|
++ mf.sprep ++ "," ++ ff.sprep ++ "," ++ nf.sprep ++ "," ++ mf.pprep ++ ","
|
||||||
++ af.sm ++ "," ++ af.sf ++ "," ++ af.sn ++ "," ++ af.sp ++ ","
|
++ af.short ! (GSg Masc) ++ "," ++ af.short ! (GSg Fem) ++ "," ++ af.short ! (GSg Neut) ++ "," ++ af.short ! GPl ++ ","
|
||||||
++ af.comp
|
++ af.comp
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -1697,8 +1708,8 @@ oper
|
|||||||
let fut : Agr=>Str = \\a => verbFutAgree v a in
|
let fut : Agr=>Str = \\a => verbFutAgree v a in
|
||||||
let pres : Agr=>Str = \\a => verbPresAgree v a in
|
let pres : Agr=>Str = \\a => verbPresAgree v a in
|
||||||
let past : Agr=>Str = \\a => verbPastAgree v a "" in
|
let past : Agr=>Str = \\a => verbPastAgree v a "" in
|
||||||
let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in
|
let imp : Agr=>Str = \\a => (verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2 in
|
||||||
let ppp : GenNum=>Str = \\gn => shortPastPassPart v gn in
|
let ppp : GenNum=>Str = variants {} {-(pastPassPart v).short-} in
|
||||||
let inf = verbInf v in
|
let inf = verbInf v in
|
||||||
inf ++ "-"
|
inf ++ "-"
|
||||||
++ inf ++ ","
|
++ inf ++ ","
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ lin
|
|||||||
++ vp.compl ! pol.p ! a
|
++ vp.compl ! pol.p ! a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s=\\p,gn => adv.s ++ imp.s ! p ! gn
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : NP -> VP -> Cl ; -- John walks - Иван гуляет
|
-- : NP -> VP -> Cl ; -- John walks - Иван гуляет
|
||||||
PredVP np vp = {
|
PredVP np vp = {
|
||||||
subj=np.s ! Nom ;
|
subj=np.s ! Nom ;
|
||||||
|
|||||||
@@ -56,8 +56,8 @@ lin
|
|||||||
in8front_Prep = mkPrep "перед" Ins ;
|
in8front_Prep = mkPrep "перед" Ins ;
|
||||||
in_Prep = mkPrep v_prep_mod Loc ;
|
in_Prep = mkPrep v_prep_mod Loc ;
|
||||||
on_Prep = mkPrep "на" Loc ;
|
on_Prep = mkPrep "на" Loc ;
|
||||||
part_Prep = {s="" ; c=Ptv ; neggen=False ; hasPrep=False } ;
|
part_Prep = {s="" ; c=Ptv ; hasPrep=False } ;
|
||||||
possess_Prep = {s="у" ; c=Gen ; neggen=False ; hasPrep=False} ;
|
possess_Prep = {s="у" ; c=Gen ; hasPrep=False} ;
|
||||||
through_Prep = mkPrep "через" Acc ;
|
through_Prep = mkPrep "через" Acc ;
|
||||||
to_Prep = mkPrep k_prep_dat_mod Dat ;
|
to_Prep = mkPrep k_prep_dat_mod Dat ;
|
||||||
under_Prep = mkPrep pod_prep_mod Ins ;
|
under_Prep = mkPrep pod_prep_mod Ins ;
|
||||||
@@ -99,14 +99,13 @@ lin
|
|||||||
|
|
||||||
can8know_VV = {v=can; modal=\\a=>[]} ;
|
can8know_VV = {v=can; modal=\\a=>[]} ;
|
||||||
can_VV = {v=can; modal=\\a=>[]} ;
|
can_VV = {v=can; modal=\\a=>[]} ;
|
||||||
must_VV = {v=nullVerb; modal=adjFormsToShort (makeAdjectiveForms "должный" "" "1*a" PreferFull)} ;
|
must_VV = {v=nullVerb; modal=table {Ag gn _ => (makeAdjectiveForms "должный" "" "1*a" PreferFull).short ! gn}} ;
|
||||||
want_VV = {v=want; modal=\\a=>[]} ;
|
want_VV = {v=want; modal=\\a=>[]} ;
|
||||||
|
|
||||||
-- : Det ;
|
-- : Det ;
|
||||||
every_Det = {
|
every_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PreferFull)).s ! GSg g;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PreferFull)).s ! GSg g;
|
||||||
type=NormalDet ;
|
type=NormalDet ;
|
||||||
g = Masc ;
|
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = Num1 ;
|
size = Num1 ;
|
||||||
} ;
|
} ;
|
||||||
@@ -114,7 +113,6 @@ lin
|
|||||||
someSg_Det = {
|
someSg_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GSg g;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GSg g;
|
||||||
type=NormalDet ;
|
type=NormalDet ;
|
||||||
g = Masc ;
|
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = Num1 ;
|
size = Num1 ;
|
||||||
} ;
|
} ;
|
||||||
@@ -122,7 +120,6 @@ lin
|
|||||||
somePl_Det = {
|
somePl_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PreferFull)).s ! GPl;
|
||||||
type=NormalDet ;
|
type=NormalDet ;
|
||||||
g = Masc ;
|
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = NumAll ;
|
size = NumAll ;
|
||||||
} ;
|
} ;
|
||||||
@@ -130,7 +127,6 @@ lin
|
|||||||
few_Det = {
|
few_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PreferFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PreferFull)).s ! GPl;
|
||||||
type=NormalDet ;
|
type=NormalDet ;
|
||||||
g = Masc ;
|
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = NumAll ;
|
size = NumAll ;
|
||||||
} ;
|
} ;
|
||||||
@@ -138,7 +134,6 @@ lin
|
|||||||
many_Det, much_Det = {
|
many_Det, much_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PreferFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PreferFull)).s ! GPl;
|
||||||
type=NormalDet ;
|
type=NormalDet ;
|
||||||
g = Neut ;
|
|
||||||
c = Gen ;
|
c = Gen ;
|
||||||
size = NumAll
|
size = NumAll
|
||||||
} ;
|
} ;
|
||||||
@@ -169,12 +164,12 @@ lin
|
|||||||
too_AdA = ss "слишком" ;
|
too_AdA = ss "слишком" ;
|
||||||
very_AdA = ss "очень" ;
|
very_AdA = ss "очень" ;
|
||||||
|
|
||||||
everybody_NP = lin NP everybody ;
|
everybody_NP = everybody ;
|
||||||
everything_NP = lin NP everything ;
|
everything_NP = everything ;
|
||||||
something_NP = lin NP something ;
|
something_NP = something ;
|
||||||
somebody_NP = lin NP somebody ;
|
somebody_NP = somebody ;
|
||||||
nothing_NP = lin NP nothing ;
|
nothing_NP = nothing ;
|
||||||
nobody_NP = lin NP nobody ;
|
nobody_NP = nobody ;
|
||||||
|
|
||||||
but_PConj = ss "но" ;
|
but_PConj = ss "но" ;
|
||||||
otherwise_PConj = ss "иначе" ;
|
otherwise_PConj = ss "иначе" ;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ lin
|
|||||||
adv=\\a=>[] ;
|
adv=\\a=>[] ;
|
||||||
compl=\\_ => case ap.preferShort of {
|
compl=\\_ => case ap.preferShort of {
|
||||||
PreferFull => (\\a => ap.s ! agrGenNum a ! Inanimate ! Ins) ;
|
PreferFull => (\\a => ap.s ! agrGenNum a ! Inanimate ! Ins) ;
|
||||||
PrefShort => ap.short
|
PrefShort => (\\a => ap.short ! agrGenNum a)
|
||||||
} ;
|
} ;
|
||||||
p = Pos
|
p = Pos
|
||||||
} ;
|
} ;
|
||||||
@@ -146,7 +146,7 @@ lin
|
|||||||
-- : AP -> Comp ; -- (be) small
|
-- : AP -> Comp ; -- (be) small
|
||||||
CompAP ap = case ap.preferShort of {
|
CompAP ap = case ap.preferShort of {
|
||||||
PreferFull => {s=\\a=>ap.s ! agrGenNum a ! Inanimate ! Ins ; adv=[] ; cop=InsCopula} ;
|
PreferFull => {s=\\a=>ap.s ! agrGenNum a ! Inanimate ! Ins ; adv=[] ; cop=InsCopula} ;
|
||||||
PrefShort => {s=ap.short ; adv=[] ; cop=EllCopula}
|
PrefShort => {s=\\a=>ap.short ! agrGenNum a ; adv=[] ; cop=EllCopula}
|
||||||
};
|
};
|
||||||
|
|
||||||
-- : NP -> Comp ; -- (be) the man
|
-- : NP -> Comp ; -- (be) the man
|
||||||
|
|||||||
Reference in New Issue
Block a user