mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Solved some problems from todo
This commit is contained in:
@@ -55,12 +55,14 @@ lincat
|
|||||||
|
|
||||||
Det, DAP = {
|
Det, DAP = {
|
||||||
s : DetTable ;
|
s : DetTable ;
|
||||||
|
type : DetType ; -- main purpose is to avoid emptiness of articles, but can be reused later for something else
|
||||||
g : Gender ;
|
g : Gender ;
|
||||||
c : Case ;
|
c : Case ;
|
||||||
size : NumSize
|
size : NumSize
|
||||||
} ;
|
} ;
|
||||||
Predet = ResRus.Adjective ** {size : NumSize} ;
|
Predet = ResRus.Adjective ** {size : NumSize} ;
|
||||||
Quant, IQuant = ResRus.Adjective ** {g: Gender; c: Case} ;
|
IQuant = ResRus.Adjective ** {g: Gender; c: Case} ;
|
||||||
|
Quant = ResRus.Adjective ** {g: Gender; c: Case; type: DetType} ;
|
||||||
Num, Numeral, Card = NumDet ;
|
Num, Numeral, Card = NumDet ;
|
||||||
Digits = {s : Str ; size: NumSize} ;
|
Digits = {s : Str ; size: NumSize} ;
|
||||||
|
|
||||||
@@ -72,7 +74,8 @@ lincat
|
|||||||
a : Agr
|
a : Agr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IP, RP = ResRus.IPronounForms ;
|
IP = ResRus.IPronounForms ;
|
||||||
|
RP = ResRus.RPronounForms ;
|
||||||
IComp = {s : AgrTable ; adv : Str ; cop : CopulaType } ;
|
IComp = {s : AgrTable ; adv : Str ; cop : CopulaType } ;
|
||||||
IDet = {
|
IDet = {
|
||||||
s : DetTable ;
|
s : DetTable ;
|
||||||
@@ -116,5 +119,5 @@ linref
|
|||||||
QCl = \s -> s.subj ++ s.adv ++ (verbInf s.verb) ++ s.dep ++ s.compl ;
|
QCl = \s -> s.subj ++ s.adv ++ (verbInf s.verb) ++ s.dep ++ s.compl ;
|
||||||
RCl = \s -> s.subj ! GSg Neut ! Inanimate ! Nom ++ s.adv ! Ag (GSg Neut) P3 ++ (verbInf s.verb) ++ s.dep ++ s.compl ! Ag (GSg Neut) P3 ;
|
RCl = \s -> s.subj ! GSg Neut ! Inanimate ! Nom ++ s.adv ! Ag (GSg Neut) P3 ++ (verbInf s.verb) ++ s.dep ++ s.compl ! Ag (GSg Neut) P3 ;
|
||||||
IP = \s -> s.nom ;
|
IP = \s -> s.nom ;
|
||||||
RP = \s -> s.nom ;
|
RP = \s -> s.s!GSg Neut!Inanimate!Nom ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ concrete ConjunctionRus of Conjunction =
|
|||||||
-- ConjDet : Conj -> ListDAP -> Det ; -- his or her
|
-- ConjDet : Conj -> ListDAP -> Det ; -- his or her
|
||||||
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
|
||||||
g=xs.g ;
|
g=xs.g ;
|
||||||
c=xs.c ;
|
c=xs.c ;
|
||||||
size=xs.size
|
size=xs.size
|
||||||
|
|||||||
@@ -9,7 +9,20 @@ lin
|
|||||||
-- : Det -> CN -> NP ; -- the man
|
-- : Det -> CN -> NP ; -- the man
|
||||||
DetCN det cn =
|
DetCN det cn =
|
||||||
let n = numSizeNumber det.size in {
|
let n = numSizeNumber det.size in {
|
||||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size;
|
s=case det.type of {
|
||||||
|
EmptyIndef => \\cas =>
|
||||||
|
let d=case (numSizeNum cas det.size ) of {Pl=>a_Pl_Det; _=>a_Det} in
|
||||||
|
d.s ! det.g ! Inanimate ! cas
|
||||||
|
++ det.s ! cn.g ! cn.anim ! cas
|
||||||
|
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ;
|
||||||
|
EmptyDef => \\cas =>
|
||||||
|
let d=case (numSizeNum cas det.size ) of {Pl=>the_Pl_Det; _=>the_Det} in
|
||||||
|
d.s ! det.g ! Inanimate ! cas
|
||||||
|
++ det.s ! cn.g ! cn.anim ! cas
|
||||||
|
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ;
|
||||||
|
_ => \\cas => det.s ! cn.g ! cn.anim ! cas
|
||||||
|
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size
|
||||||
|
} ;
|
||||||
pron=False ;
|
pron=False ;
|
||||||
a=Ag (gennum det.g n) P3
|
a=Ag (gennum det.g n) P3
|
||||||
} ;
|
} ;
|
||||||
@@ -42,7 +55,11 @@ lin
|
|||||||
|
|
||||||
-- : Det -> NP ; -- these five
|
-- : Det -> NP ; -- these five
|
||||||
DetNP det = {
|
DetNP det = {
|
||||||
s=\\cas => det.s ! det.g ! Inanimate ! cas ;
|
s=case det.type of {
|
||||||
|
EmptyIndef => \\cas => a_Det.s ! det.g ! Inanimate ! cas ++ det.s ! det.g ! Inanimate ! cas ;
|
||||||
|
EmptyDef => \\cas => the_Det.s ! det.g ! Inanimate ! cas ++ det.s ! det.g ! Inanimate ! cas ;
|
||||||
|
_ => \\cas => det.s ! det.g ! Inanimate ! cas
|
||||||
|
} ;
|
||||||
pron=False ;
|
pron=False ;
|
||||||
a=Ag (gennum det.g (numSizeNumber det.size)) P3
|
a=Ag (gennum det.g (numSizeNumber det.size)) P3
|
||||||
} ;
|
} ;
|
||||||
@@ -78,7 +95,8 @@ lin
|
|||||||
|
|
||||||
-- : Quant -> Num -> Det ; -- these five
|
-- : Quant -> Num -> Det ; -- these five
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s=\\g,a,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas ++ num.s ! g ! a ! cas ;
|
s=\\g,anim,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! anim ! cas ++ num.s ! g ! anim ! cas ;
|
||||||
|
type=quant.type ;
|
||||||
g=quant.g ;
|
g=quant.g ;
|
||||||
c=quant.c ;
|
c=quant.c ;
|
||||||
size=num.size
|
size=num.size
|
||||||
@@ -89,6 +107,7 @@ lin
|
|||||||
s=\\g,a,cas => num.s ! g ! a ! cas
|
s=\\g,a,cas => num.s ! g ! a ! cas
|
||||||
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas
|
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas
|
||||||
++ (adjFormsAdjective ord).s ! gennum quant.g (numSizeNum cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
++ (adjFormsAdjective ord).s ! gennum quant.g (numSizeNum cas num.size) ! Inanimate ! numSizeCase cas num.size ;
|
||||||
|
type=quant.type ;
|
||||||
g=quant.g ;
|
g=quant.g ;
|
||||||
c=quant.c ;
|
c=quant.c ;
|
||||||
size=num.size
|
size=num.size
|
||||||
@@ -109,7 +128,14 @@ lin
|
|||||||
OrdSuperl a = long_superlative a ;
|
OrdSuperl a = long_superlative a ;
|
||||||
|
|
||||||
-- : Pron -> Quant ; -- my (house)
|
-- : Pron -> Quant ; -- my (house)
|
||||||
PossPron pron = {s=mkPronTable pron.poss ; short=\\a=>[] ; g=Neut; c=Nom; preferShort=PrefFull} ;
|
PossPron pron = {
|
||||||
|
s=mkPronTable pron.poss ;
|
||||||
|
type=NormalDet ;
|
||||||
|
short=\\a=>[] ;
|
||||||
|
g=Neut ;
|
||||||
|
c=Nom ;
|
||||||
|
preferShort=PrefFull
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : AdN -> Card -> Card
|
-- : AdN -> Card -> Card
|
||||||
AdNum adn card = card ** {
|
AdNum adn card = card ** {
|
||||||
@@ -165,7 +191,7 @@ lin
|
|||||||
CountNP det np = {
|
CountNP det np = {
|
||||||
s=\\cas => det.s ! Neut ! Inanimate ! cas ++ selectCase np.s from2 ;
|
s=\\cas => det.s ! Neut ! Inanimate ! cas ++ selectCase np.s from2 ;
|
||||||
pron=False ;
|
pron=False ;
|
||||||
a=np.a
|
a=numSizeGenAgr det.size Neut P3
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
@@ -176,16 +202,31 @@ lin
|
|||||||
s=\\g,anim,cas => ap.s ! GSg g ! anim ! cas ++ dap.s ! g ! anim ! cas
|
s=\\g,anim,cas => ap.s ! GSg g ! anim ! cas ++ dap.s ! g ! anim ! cas
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- DetDAP : Det -> DAP ; -- this (or that)
|
-- : Det -> DAP ; -- this (or that)
|
||||||
DetDAP det = det ;
|
DetDAP det = det ;
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
-- Backwards compatibility
|
-- Backwards compatibility
|
||||||
-- : Quant ; -- the (house), the (houses)
|
-- : Quant ; -- the (house), the (houses)
|
||||||
DefArt = adjFormsAdjective the_forms ** {preferShort=PrefFull ; g=Neut ; c=Nom} ;
|
DefArt = {
|
||||||
|
s=\\gn,anim,cas=>[] ;
|
||||||
|
type=EmptyDef ;
|
||||||
|
short=\\a=>[] ;
|
||||||
|
c=Nom ;
|
||||||
|
g=Neut ;
|
||||||
|
size=Num1 ;
|
||||||
|
preferShort=PrefFull
|
||||||
|
} ;
|
||||||
|
-- DefArt = adjFormsAdjective the_forms ** {preferShort=PrefFull ; g=Neut ; c=Nom} ;
|
||||||
-- : Quant ; -- a (house), (houses)
|
-- : Quant ; -- a (house), (houses)
|
||||||
-- IndefArt = {s = \\gn,anim,cas=>[] ; short=\\a=>[] ; c=Nom; g = Neut; size = Num1 ; preferShort=PrefFull};
|
IndefArt = {
|
||||||
|
s=\\gn,anim,cas=>[] ;
|
||||||
IndefArt = adjFormsAdjective a_forms ** {preferShort=PrefFull ; g=Neut ; c=Nom} ;
|
type=EmptyIndef ;
|
||||||
|
short=\\a=>[] ;
|
||||||
|
c=Nom ;
|
||||||
|
g=Neut ;
|
||||||
|
size=Num1 ;
|
||||||
|
preferShort=PrefFull
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,9 +220,9 @@ lin pot2plus d e =
|
|||||||
lin pot2as3 n =
|
lin pot2as3 n =
|
||||||
{s = n.s ! indep ; size = n.size} ;
|
{s = n.s ! indep ; size = n.size} ;
|
||||||
lin pot3 n =
|
lin pot3 n =
|
||||||
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ; size = Num5} ;
|
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille.s ! numSizeNum c n.size ! numSizeCase c n.size ; size = Num5} ;
|
||||||
lin pot3plus n m =
|
lin pot3plus n m =
|
||||||
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ++ m.s ! indep ! g ! a ! c ; size = Num5} ;
|
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille.s ! numSizeNum c n.size ! numSizeCase c n.size ++ m.s ! indep ! g ! a ! c ; size = Num5} ;
|
||||||
|
|
||||||
--- TODO
|
--- TODO
|
||||||
--- raz/odin
|
--- raz/odin
|
||||||
|
|||||||
@@ -227,6 +227,7 @@ oper
|
|||||||
let sg1=stemPresSg1 + endPresSg1 in
|
let sg1=stemPresSg1 + endPresSg1 in
|
||||||
let sg3 : Str = case bconj of {
|
let sg3 : Str = case bconj of {
|
||||||
First => (Z.sg1StemFromVerb sg1) + "ет" ;
|
First => (Z.sg1StemFromVerb sg1) + "ет" ;
|
||||||
|
Mixed => (Z.sg1StemFromVerb sg1) + "чет" ;
|
||||||
FirstE => (Z.sg1StemFromVerb sg1) + "ёт" ;
|
FirstE => (Z.sg1StemFromVerb sg1) + "ёт" ;
|
||||||
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
|
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
|
||||||
_ => (Z.sg1StemFromVerb sg1) + "ет"
|
_ => (Z.sg1StemFromVerb sg1) + "ет"
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ param
|
|||||||
ShortFormPreference = PrefShort | PrefFull ;
|
ShortFormPreference = PrefShort | PrefFull ;
|
||||||
CopulaType = NomCopula | InsCopula | EllCopula;
|
CopulaType = NomCopula | InsCopula | EllCopula;
|
||||||
SpecialFuture = NormalFuture | BeFuture | CanFuture | WantFuture | NullFuture ;
|
SpecialFuture = NormalFuture | BeFuture | CanFuture | WantFuture | NullFuture ;
|
||||||
|
DetType = NormalDet | EmptyDef | EmptyIndef ; -- artificial parameter to side-step DetNP parsing issues
|
||||||
oper
|
oper
|
||||||
-- GenNum helpers and coercions
|
-- GenNum helpers and coercions
|
||||||
MSg = GSg Masc ;
|
MSg = GSg Masc ;
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ lin
|
|||||||
a=cl.a
|
a=cl.a
|
||||||
} ;
|
} ;
|
||||||
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
-- : RP -> ClSlash -> RCl ; -- whom John loves
|
||||||
RelSlash rp cls = let rp_as_adj = rp.poss ** {preferShort=PrefFull; sf,sm,sn,sp,comp = []} in {
|
RelSlash rp cls = {
|
||||||
subj=(adjFormsAdjective rp_as_adj).s ; -- TODO: cls.c and applyPrep not used?
|
subj=rp.s ;
|
||||||
adv=\\a=>cls.adv ; -- TODO: this should be after subj in this case
|
adv=\\a=>cls.adv ; -- TODO: this should be after subj in this case
|
||||||
verb=cls.verb ;
|
verb=cls.verb ;
|
||||||
dep=cls.dep ;
|
dep=cls.dep ;
|
||||||
@@ -24,10 +24,9 @@ lin
|
|||||||
a=cls.a
|
a=cls.a
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- RelVP : RP -> VP -> RCl ; -- who loves John
|
-- : RP -> VP -> RCl ; -- who loves John
|
||||||
RelVP rp vp =
|
RelVP rp vp = {
|
||||||
let rp_as_adj = rp.poss ** {preferShort=PrefFull; sf,sm,sn,sp,comp = []} in {
|
subj=rp.s;
|
||||||
subj=(adjFormsAdjective rp_as_adj).s ;
|
|
||||||
adv=\\a=>[] ;
|
adv=\\a=>[] ;
|
||||||
verb=vp.verb ;
|
verb=vp.verb ;
|
||||||
dep=vp.dep ;
|
dep=vp.dep ;
|
||||||
@@ -36,9 +35,11 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : RP ; -- which
|
-- : RP ; -- which
|
||||||
IdRP = lin RP (doKotoryjPron "который" (Ag (GSg Neut) P3) Inanimate) ;
|
IdRP = lin RP (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 = (prependIP (np.s ! Nom ++ prep.s) rp) ; -- TODO: This is wrong... RP should be in agreement, but with records it's a bit hard...
|
FunRP prep np rp = {
|
||||||
|
s=\\gn,anim,cas => np.s ! cas ++ prep.s ++ rp.s ! gn ! Inanimate ! prep.c ;
|
||||||
|
a=np.a
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -686,6 +686,11 @@ oper
|
|||||||
a : Agr
|
a : Agr
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
RPronounForms : Type = {
|
||||||
|
s : AdjTable ;
|
||||||
|
a : Agr
|
||||||
|
} ;
|
||||||
|
|
||||||
PronTable = GenNum => Animacy => Case => Str ;
|
PronTable = GenNum => Animacy => Case => Str ;
|
||||||
|
|
||||||
mkPronTable : PronForms -> PronTable
|
mkPronTable : PronForms -> PronTable
|
||||||
@@ -1019,20 +1024,13 @@ oper
|
|||||||
prep, loc = ch + "ом" ;
|
prep, loc = ch + "ом" ;
|
||||||
ins = ch + "ем" ;
|
ins = ch + "ем" ;
|
||||||
poss = (doChPron subPoss a anim).poss
|
poss = (doChPron subPoss a anim).poss
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
doKotoryjPron : Str -> Agr -> Animacy -> IPronounForms
|
doKotoryjPron : Str -> Agr -> RPronounForms
|
||||||
= \w, a, anim -> -- "который", "некоторый"
|
= \w, a -> { -- "который"
|
||||||
let stem = (Predef.tk 2 w) in {
|
|
||||||
a = a ;
|
a = a ;
|
||||||
anim=anim ;
|
s=(adjFormsAdjective (guessAdjectiveForms w)).s
|
||||||
nom, voc = stem + "ое" ;
|
} ;
|
||||||
gen, acc, ptv = stem + "ого" ;
|
|
||||||
dat = stem + "ому" ;
|
|
||||||
prep, loc = stem + "ом" ;
|
|
||||||
ins = stem + "ым" ;
|
|
||||||
poss = guessAdjectiveForms w
|
|
||||||
} ;
|
|
||||||
|
|
||||||
prependIP : Str -> IPronounForms -> IPronounForms
|
prependIP : Str -> IPronounForms -> IPronounForms
|
||||||
= \s,ip -> ip ** {
|
= \s,ip -> ip ** {
|
||||||
@@ -1056,8 +1054,8 @@ oper
|
|||||||
fsins = s ++ ip.poss.fsins ;
|
fsins = s ++ ip.poss.fsins ;
|
||||||
pins = s ++ ip.poss.pins ;
|
pins = s ++ ip.poss.pins ;
|
||||||
msprep= s ++ ip.poss.msprep ;
|
msprep= s ++ ip.poss.msprep ;
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
appendToIP : IPronounForms -> Str -> IPronounForms
|
appendToIP : IPronounForms -> Str -> IPronounForms
|
||||||
= \ip,s -> ip ** {
|
= \ip,s -> ip ** {
|
||||||
@@ -1165,17 +1163,17 @@ oper
|
|||||||
fsacc = "эту" ;
|
fsacc = "эту" ;
|
||||||
msins = "этим" ;
|
msins = "этим" ;
|
||||||
fsins = "этой" ;
|
fsins = "этой" ;
|
||||||
pins = "этих" ;
|
pins = "этими" ;
|
||||||
msprep = "этом" ;
|
msprep = "этом" ;
|
||||||
preferShort = PrefFull ;
|
preferShort = PrefFull ;
|
||||||
comp = []
|
comp = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
a_forms = { -- these are approximate translations 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, sm = "некий" ;
|
||||||
fsnom, sf = "некая" ;
|
fsnom, sf = "некая" ;
|
||||||
nsnom, sn = "некое" ;
|
nsnom, sn = "некое" ;
|
||||||
pnom, sp = "некии" ;
|
pnom, sp = "некие" ;
|
||||||
msgen = "некого" ;
|
msgen = "некого" ;
|
||||||
fsgen = "некой" ;
|
fsgen = "некой" ;
|
||||||
pgen = "неких" ;
|
pgen = "неких" ;
|
||||||
@@ -1189,7 +1187,24 @@ oper
|
|||||||
comp = []
|
comp = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
the_forms = { -- these are approximate translations of def article; preventing DetNP parsing problems
|
a_Det = {
|
||||||
|
s : DetTable = \\g => (adjFormsAdjective a_forms).s ! GSg g;
|
||||||
|
type=NormalDet ;
|
||||||
|
g = Masc ;
|
||||||
|
c = Nom ;
|
||||||
|
size = Num1 ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
a_Pl_Det = {
|
||||||
|
s : DetTable = \\g => (adjFormsAdjective a_forms).s ! GPl;
|
||||||
|
type=NormalDet ;
|
||||||
|
g = Masc ;
|
||||||
|
c = Nom ;
|
||||||
|
size = NumAll ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
the_forms = { -- this pronoun is an approximate translation of def article; preventing DetNP parsing problems
|
||||||
msnom, sm = "данный" ;
|
msnom, sm = "данный" ;
|
||||||
fsnom, sf = "данная" ;
|
fsnom, sf = "данная" ;
|
||||||
nsnom, sn = "данное" ;
|
nsnom, sn = "данное" ;
|
||||||
@@ -1207,6 +1222,22 @@ oper
|
|||||||
comp = []
|
comp = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
the_Det = {
|
||||||
|
s : DetTable = \\g => (adjFormsAdjective the_forms).s ! GSg g;
|
||||||
|
type=NormalDet ;
|
||||||
|
g = Masc ;
|
||||||
|
c = Nom ;
|
||||||
|
size = Num1 ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
the_Pl_Det = {
|
||||||
|
s : DetTable = \\g => (adjFormsAdjective the_forms).s ! GPl;
|
||||||
|
type=NormalDet ;
|
||||||
|
g = Masc ;
|
||||||
|
c = Nom ;
|
||||||
|
size = NumAll ;
|
||||||
|
} ;
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
-- Numerals -- Числительные
|
-- Numerals -- Числительные
|
||||||
---------------
|
---------------
|
||||||
@@ -1214,11 +1245,7 @@ oper
|
|||||||
param DForm = unit | teen | ten | hund ;
|
param DForm = unit | teen | ten | hund ;
|
||||||
param Place = attr | indep ;
|
param Place = attr | indep ;
|
||||||
oper
|
oper
|
||||||
mille : NumSize => Str = table {
|
mille : Noun = nounFormsNoun ((guessNounForms "тысяча") ** {sins=variants {"тысячей" ; "тысячью"}});
|
||||||
Num1 => "тысяча" ;
|
|
||||||
Num2_4 => "тысячи" ; -- NumAll ?
|
|
||||||
_ => "тысяч"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
-- Adverbs -- Наречия
|
-- Adverbs -- Наречия
|
||||||
@@ -1258,6 +1285,8 @@ oper
|
|||||||
<Acc,Num2_4 | Num5> => Gen ;
|
<Acc,Num2_4 | Num5> => Gen ;
|
||||||
_ => cas
|
_ => cas
|
||||||
} ;
|
} ;
|
||||||
|
numSizeGenAgr : NumSize -> Gender -> Person -> Agr
|
||||||
|
= \ns,g,p -> Ag (case ns of {Num1 => GSg g ; NumAll | Num2_4 | Num5 => GPl}) p ;
|
||||||
|
|
||||||
oper -- TODO:
|
oper -- TODO:
|
||||||
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ lin
|
|||||||
-- : Temp -> Pol -> RCl -> RS ; -- that had not slept
|
-- : Temp -> Pol -> RCl -> RS ; -- that had not slept
|
||||||
UseRCl temp pol rcl = {
|
UseRCl temp pol rcl = {
|
||||||
s = \\gn,anim,cas =>
|
s = \\gn,anim,cas =>
|
||||||
let parts = R.verbAgr rcl.verb Ind temp.t rcl.a pol.p in
|
|
||||||
let a=genNumAgrP3 gn in
|
let a=genNumAgrP3 gn in
|
||||||
temp.s ++ parts.p1 ++ rcl.subj ! gn ! anim ! cas ++ pol.s ++ rcl.adv ! a ++ parts.p2 ++ rcl.dep ++ rcl.compl ! a ;
|
let parts = R.verbAgr rcl.verb Ind temp.t a pol.p in
|
||||||
|
temp.s ++ parts.p1 ++ pol.s ++ rcl.subj ! gn ! anim ! cas ++ rcl.adv ! a ++ parts.p2 ++ rcl.dep ++ rcl.compl ! a ;
|
||||||
c = Nom
|
c = Nom
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -17,22 +17,29 @@ lin
|
|||||||
whoSg_IP = who_sg ;
|
whoSg_IP = who_sg ;
|
||||||
whoPl_IP = who_pl ;
|
whoPl_IP = who_pl ;
|
||||||
|
|
||||||
|
-- : IQuant ;
|
||||||
which_IQuant = (adjFormsAdjective (makeAdjectiveForms "который" "" "1a" PrefFull)) ** {
|
which_IQuant = (adjFormsAdjective (makeAdjectiveForms "который" "" "1a" PrefFull)) ** {
|
||||||
preferShort=PrefFull ;
|
preferShort=PrefFull ;
|
||||||
g=Neut ;
|
g=Neut ;
|
||||||
c=Nom
|
c=Nom
|
||||||
} ;
|
} ;
|
||||||
|
-- : Quant ;
|
||||||
this_Quant = (adjFormsAdjective this_forms) ** {
|
this_Quant = (adjFormsAdjective this_forms) ** {
|
||||||
|
type=NormalDet ;
|
||||||
preferShort=PrefFull ;
|
preferShort=PrefFull ;
|
||||||
g=Neut ;
|
g=Neut ;
|
||||||
c=Nom
|
c=Nom
|
||||||
} ;
|
} ;
|
||||||
|
-- : Quant ;
|
||||||
that_Quant = (adjFormsAdjective that_forms) ** {
|
that_Quant = (adjFormsAdjective that_forms) ** {
|
||||||
|
type=NormalDet ;
|
||||||
preferShort=PrefFull ;
|
preferShort=PrefFull ;
|
||||||
g=Neut ;
|
g=Neut ;
|
||||||
c=Nom
|
c=Nom
|
||||||
} ;
|
} ;
|
||||||
|
-- : Quant ;
|
||||||
no_Quant = (adjFormsAdjective (makeAdjectiveForms "никакой" "" "3b" PrefFull)) ** {
|
no_Quant = (adjFormsAdjective (makeAdjectiveForms "никакой" "" "3b" PrefFull)) ** {
|
||||||
|
type=NormalDet ;
|
||||||
preferShort=PrefFull ;
|
preferShort=PrefFull ;
|
||||||
g=Neut ;
|
g=Neut ;
|
||||||
c=Nom
|
c=Nom
|
||||||
@@ -96,34 +103,42 @@ lin
|
|||||||
must_VV = {v=nullVerb; modal=adjFormsToShort (makeAdjectiveForms "должный" "" "1*a" PrefFull)} ;
|
must_VV = {v=nullVerb; modal=adjFormsToShort (makeAdjectiveForms "должный" "" "1*a" PrefFull)} ;
|
||||||
want_VV = {v=want; modal=\\a=>[]} ;
|
want_VV = {v=want; modal=\\a=>[]} ;
|
||||||
|
|
||||||
|
-- : Det ;
|
||||||
every_Det = {
|
every_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PrefFull)).s ! GSg g;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "каждый" "" "1*a" PrefFull)).s ! GSg g;
|
||||||
|
type=NormalDet ;
|
||||||
g = Masc ;
|
g = Masc ;
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = Num1 ;
|
size = Num1 ;
|
||||||
} ;
|
} ;
|
||||||
|
-- : Det ;
|
||||||
someSg_Det = {
|
someSg_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GSg g;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GSg g;
|
||||||
|
type=NormalDet ;
|
||||||
g = Masc ;
|
g = Masc ;
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = Num1 ;
|
size = Num1 ;
|
||||||
} ;
|
} ;
|
||||||
|
-- : Det ;
|
||||||
somePl_Det = {
|
somePl_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "некоторый" "" "1*a" PrefFull)).s ! GPl;
|
||||||
|
type=NormalDet ;
|
||||||
g = Masc ;
|
g = Masc ;
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = NumAll ;
|
size = NumAll ;
|
||||||
} ;
|
} ;
|
||||||
|
-- : Det ;
|
||||||
few_Det = { -- numeral! TODO: мало ? немного ?
|
few_Det = { -- numeral! TODO: мало ? немного ?
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PrefFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "немногий" "" "3a" PrefFull)).s ! GPl;
|
||||||
|
type=NormalDet ;
|
||||||
g = Masc ;
|
g = Masc ;
|
||||||
c = Nom ;
|
c = Nom ;
|
||||||
size = NumAll ;
|
size = NumAll ;
|
||||||
} ;
|
} ;
|
||||||
|
-- : Det ;
|
||||||
many_Det, much_Det = {
|
many_Det, much_Det = {
|
||||||
s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PrefFull)).s ! GPl;
|
s = \\g => (adjFormsAdjective (makeAdjectiveForms "многий" "" "3a" PrefFull)).s ! GPl;
|
||||||
|
type=NormalDet ;
|
||||||
g = Neut ;
|
g = Neut ;
|
||||||
c = Gen ;
|
c = Gen ;
|
||||||
size = NumAll
|
size = NumAll
|
||||||
|
|||||||
@@ -1,32 +1,19 @@
|
|||||||
# Some problematic places
|
# Some problematic places
|
||||||
|
|
||||||
|
|
||||||
AllRusAbs: UseCl (TTAnt TFut ASimul) PPos (PredVP (AdvNP (CountNP much_Det (DetCN (DetQuant DefArt NumSg) (UseN house_N))) (weekdayNextAdv monday_Weekday)) ready_VP)
|
|
||||||
AllRus: многие из дом в следующий понедельник будет готовым
|
|
||||||
|
|
||||||
> l UttS (AdvS (AdAdv quite_Adv (ComparAdvAdj less_CAdv narrow_A everything_NP)) (UseCl (TTAnt TPres ASimul) PNeg (ExistNP something_NP)))
|
> l UttS (AdvS (AdAdv quite_Adv (ComparAdvAdj less_CAdv narrow_A everything_NP)) (UseCl (TTAnt TPres ASimul) PNeg (ExistNP something_NP)))
|
||||||
довольно менее узко , чем всё не существовает что &+ -то
|
довольно менее узко , чем всё не существовает что &+ -то
|
||||||
|
|
||||||
Lang: DetCN many_Det (RelCN (UseN bike_N) (UseRCl (TTAnt TPres AAnter) PNeg (RelVP IdRP (UseV fall_V))))
|
|
||||||
LangRus: многие велосипеды , которые не падает
|
|
||||||
|
|
||||||
Lang: DetCN (DetQuantOrd (PossPron he_Pron) (NumCard (NumDigits (IDig D_0))) (OrdSuperl bad_A)) (RelCN (ConjCN both7and_DConj (BaseCN (UseN2 mother_N2) (UseN lamp_N))) (UseRCl (TTAnt TPast ASimul) PNeg (RelCl (ImpersCl ready_VP))))
|
Lang: DetCN (DetQuantOrd (PossPron he_Pron) (NumCard (NumDigits (IDig D_0))) (OrdSuperl bad_A)) (RelCN (ConjCN both7and_DConj (BaseCN (UseN2 mother_N2) (UseN lamp_N))) (UseRCl (TTAnt TPast ASimul) PNeg (RelCl (ImpersCl ready_VP))))
|
||||||
LangRus: 0 его самых плохих как матерей , так и ламп , таких не , что бы &+ ло готово
|
LangRus: 0 его самых плохих как матерей , так и ламп , таких не , что бы &+ ли готовым
|
||||||
|
|
||||||
Lang: AdvS there7from_Adv (UseCl (TTAnt TFut AAnter) PPos (CleftNP everybody_NP (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in8front_Prep (languageNP polish_Language) IdRP) (SlashPrep (PredVP somebody_NP hungry_VP) through_Prep)))))
|
Lang: AdvS there7from_Adv (UseCl (TTAnt TFut AAnter) PPos (CleftNP everybody_NP (UseRCl (TTAnt TPres AAnter) PPos (RelSlash (FunRP in8front_Prep (languageNP polish_Language) IdRP) (SlashPrep (PredVP somebody_NP hungry_VP) through_Prep)))))
|
||||||
LangRus: оттуда это все , польский перед которые голоден
|
LangRus: оттуда все это , польский перед которыми голоден
|
||||||
|
|
||||||
Lang: ComplN3 distance_N3 (DetCN (DetQuant (PossPron youPol_Pron) NumSg) (SentCN (ComplN2 brother_N2 everything_NP) (EmbedVP hungry_VP)))
|
Lang: ComplN3 distance_N3 (DetCN (DetQuant (PossPron youPol_Pron) NumSg) (SentCN (ComplN2 brother_N2 everything_NP) (EmbedVP hungry_VP)))
|
||||||
LangRus: расстояние от вашего брат всего быть голодно до
|
LangRus: расстояние от вашего брат всего быть голодно до
|
||||||
|
|
||||||
> l (RelNP everybody_NP (UseRCl (TTAnt TFut ASimul) PPos (RelVP IdRP ill_VP)))
|
|
||||||
все , которые будет больны
|
|
||||||
|
|
||||||
AllRusAbs: UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP not_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP)))
|
AllRusAbs: UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP not_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP)))
|
||||||
AllRus: это не не некоторые из всех , которые не будет готовы
|
AllRus: не некоторые из всех не это , которые не будут готовыми
|
||||||
|
|
||||||
> l (AdvS (weekdayNextAdv saturday_Weekday) (UseCl (TTAnt TPres AAnter) PNeg (GenericCl UseCopula)))
|
|
||||||
в следующий суббота не являешься
|
|
||||||
|
|
||||||
> l PrepNP above_Prep (UsePron i_Pron)
|
> l PrepNP above_Prep (UsePron i_Pron)
|
||||||
над мной
|
над мной
|
||||||
@@ -38,22 +25,7 @@ AllRus: это не не некоторые из всех , которые не
|
|||||||
AllRusAbs: UttImpPol PPos (ImpVP (ComplSlash (Slash2V3 add_V3 everybody_NP) (PPartNP somebody_NP drink_V2)))
|
AllRusAbs: UttImpPol PPos (ImpVP (ComplSlash (Slash2V3 add_V3 everybody_NP) (PPartNP somebody_NP drink_V2)))
|
||||||
AllRus: складываем &+ те всех в кого &+ -то пит
|
AllRus: складываем &+ те всех в кого &+ -то пит
|
||||||
|
|
||||||
** UseCl (TTAnt TPres ASimul) PPos (ExistNP (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 ∅))))))) (UseN worm_N)))
|
|
||||||
LangRus-NEW> существуют двадцать эти червей
|
|
||||||
|
|
||||||
** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a like_V2) (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 ∅))))))) (UseN woman_N))))
|
|
||||||
LangRus-NEW> нравишься двадцати этим женщин
|
|
||||||
|
|
||||||
** UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a speak_V2) (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 ∅)))))))) (UseN person_N))))
|
|
||||||
LangRus-NEW> говоришь на двух этих лица
|
|
||||||
|
|
||||||
** UseCl (TTAnt TPres ASimul) PPos (ExistNP (CountNP someSg_Det (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 ∅))))))) (UseN worm_N))))
|
** UseCl (TTAnt TPres ASimul) PPos (ExistNP (CountNP someSg_Det (DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 ∅))))))) (UseN worm_N))))
|
||||||
LangRus-NEW> существуют некоторое из двадцати этих червей
|
LangRus-NEW> некоторое из этих двадцати червей существует
|
||||||
|
|
||||||
Lang: AdvVP (ExtAdvVP (ComplVV must_VV (AdVVP always_AdV scared_VP)) (weekdayNextAdv tuesday_Weekday)) here7from_Adv
|
|
||||||
LangRus: должно всегда бояться , в следующую вторник , отсюда
|
|
||||||
|
|
||||||
> l AdvVP (ComplSlash (SlashV2V beg_V2V ready_VP) (ExtAdvNP everybody_NP there7from_Adv)) already_Adv
|
|
||||||
просить быть готовыми всех , оттуда , уже
|
|
||||||
|
|
||||||
Inherent number for nouns. eg, for geonames or pluralia tantum.
|
Inherent number for nouns. eg, for geonames or pluralia tantum.
|
||||||
|
|||||||
Reference in New Issue
Block a user