forked from GitHub/gf-rgl
Fixes to num size and other fixes
This commit is contained in:
@@ -8,13 +8,12 @@ lin
|
||||
tired_VP = mkVP (P.mkA "усталый" "" "1*a/c'" PrefFull) ;
|
||||
scared_VP = mkVP (P.mkV Imperfective "бояться" "боюсь" "боится") ; -- intran
|
||||
ill_VP = mkVP ( P.mkA "больной" "" "1*b" PrefShort) ;
|
||||
ready_VP = mkVP (P.mkA "готовый" "" "1a" PrefShort) ;
|
||||
ready_VP = mkVP (P.mkA "готовый" "" "1a" PrefFull) ;
|
||||
|
||||
-- : NP -> QCl ; -- what is x's name / wie heisst x (Ger)
|
||||
what_name_QCl np = E.PredIAdvVP how_IAdv (ComplSlash (SlashV2a (P.mkV2 (P.mkV Imperfective "звать" "зову" "зовёт") Gen)) np) ;
|
||||
|
||||
-- languages
|
||||
|
||||
lincat
|
||||
Language = N ;
|
||||
Timeunit = N ;
|
||||
@@ -79,9 +78,9 @@ lin
|
||||
-- : Weekday -> Adv ; -- on Mondays
|
||||
weekdayHabitualAdv w = P.mkAdv (EX.along_Prep.s ++ (w.pdat)) ; -- on Sundays
|
||||
-- : Weekday -> Adv ; -- last Monday
|
||||
weekdayLastAdv w = P.mkAdv (EX.to2_Prep.s ++ (PositA (P.mkA "прошлый")).s ! GSg Fem ! Inanimate ! Acc ++ w.sacc) ;
|
||||
weekdayLastAdv w = P.mkAdv (EX.to2_Prep.s ++ (PositA (P.mkA "прошлый")).s ! GSg w.g ! Inanimate ! Acc ++ w.sacc) ;
|
||||
-- : Weekday -> Adv ; -- next Monday
|
||||
weekdayNextAdv w = P.mkAdv (EX.to2_Prep.s ++ (PositA (P.mkA "следующий")).s ! GSg Fem ! Inanimate ! Acc ++ w.sacc) ;
|
||||
weekdayNextAdv w = P.mkAdv (EX.to2_Prep.s ++ (PositA (P.mkA "следующий")).s ! GSg w.g ! Inanimate ! Acc ++ w.sacc) ;
|
||||
|
||||
-- : Month -> Adv ; -- in June
|
||||
monthAdv month = P.mkAdv ("в" ++ month.sloc) ;
|
||||
@@ -115,7 +114,7 @@ lin
|
||||
let ap=adjFormsAdjective a in
|
||||
let as_n_units=(how_IAdv.s
|
||||
++ card.s ! Neut ! Inanimate ! Nom
|
||||
++ cn.s ! numSizeNum card.size ! (numSizeCase card.size)) in {
|
||||
++ cn.s ! numSizeNum Nom card.size ! (numSizeCase Nom card.size)) in { --? Nom?
|
||||
s=\\gn,anim,cas=> ap.s!gn!anim!cas ++ as_n_units ;
|
||||
short=\\a=> ap.short ! a ++ as_n_units ;
|
||||
preferShort=PrefFull ;
|
||||
@@ -125,7 +124,7 @@ lin
|
||||
-- : Card -> CN -> NP -> NP ; -- x ounces of this flour
|
||||
n_units_of_NP card cn np = {
|
||||
s = \\cas => card.s ! Neut ! Inanimate ! cas
|
||||
++ cn.s ! numSizeNum card.size ! (numSizeCase card.size)
|
||||
++ cn.s ! numSizeNum cas card.size ! (numSizeCase cas card.size)
|
||||
++ np.s ! Gen ;
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g (numSizeNumber card.size)) P3
|
||||
@@ -135,7 +134,7 @@ lin
|
||||
s=\\n,cas=> cn.s ! n ! cas
|
||||
++ "на"
|
||||
++ card.s ! Neut ! Inanimate ! Nom
|
||||
++ cn_unit.s ! (numSizeNum card.size) ! (numSizeCase card.size)
|
||||
++ cn_unit.s ! numSizeNum Nom card.size ! numSizeCase Nom card.size
|
||||
} ;
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
@@ -9,8 +9,7 @@ lin
|
||||
-- : Det -> CN -> NP ; -- the man
|
||||
DetCN det cn =
|
||||
let n = numSizeNumber det.size in {
|
||||
-- TODO: fix some cases in README
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ sizeNumCase cn.s det.size ;
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size;
|
||||
pron=False ;
|
||||
a=Ag (gennum det.g n) P3
|
||||
} ;
|
||||
@@ -26,7 +25,7 @@ lin
|
||||
UsePron pron = lin NP (pronFormsPronoun pron) ;
|
||||
|
||||
-- : Predet -> NP -> NP ; -- only the man
|
||||
PredetNP predet np = np ** {s=\\cas => predet.s ! (agrGenNum np.a) ! Inanimate ! cas ++ np.s ! numSizeCase 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
|
||||
PPartNP np v2 = np ** {
|
||||
@@ -43,14 +42,14 @@ lin
|
||||
|
||||
-- : Det -> NP ; -- these five
|
||||
DetNP det = {
|
||||
s=\\c => det.s ! det.g ! Inanimate ! c ;
|
||||
s=\\cas => det.s ! det.g ! Inanimate ! cas ;
|
||||
pron=False ;
|
||||
a=Ag (gennum det.g (numSizeNumber det.size)) P3
|
||||
} ;
|
||||
|
||||
-- : CN -> NP ; -- (beer)
|
||||
MassNP cn = {
|
||||
s = \\c => cn.s ! Sg ! c ; -- can it be plural-only? eg квасцы
|
||||
s = \\cas => cn.s ! Sg ! cas ; -- can it be plural-only? eg квасцы
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g Sg) P3
|
||||
} ;
|
||||
@@ -73,13 +72,13 @@ lin
|
||||
-- : Numeral -> Card ; -- fifty-one
|
||||
NumNumeral n = n ;
|
||||
-- : Card -> Num
|
||||
NumCard c = c ;
|
||||
NumCard card = card ;
|
||||
-- : Digits -> Card ; -- 51
|
||||
NumDigits n = {s = \\_,_,_ => n.s ; size = n.size } ;
|
||||
|
||||
-- : Quant -> Num -> Det ; -- these five
|
||||
DetQuant quant num = {
|
||||
s=\\g,a,c => quant.s ! (gennum g (numSizeNumber num.size)) ! a ! c ++ num.s ! g ! a ! c ;
|
||||
s=\\g,a,cas => quant.s ! (gennum g (numSizeNumber num.size)) ! a ! cas ++ num.s ! g ! a ! cas ;
|
||||
g=quant.g ;
|
||||
c=quant.c ;
|
||||
size=num.size
|
||||
@@ -87,10 +86,9 @@ lin
|
||||
|
||||
-- : Quant -> Num -> Ord -> Det ; -- these five best
|
||||
DetQuantOrd quant num ord = {
|
||||
s=\\g,a,c => num.s ! g ! a ! c
|
||||
++ quant.s ! (gennum g (numSizeNumber num.size)) ! a ! c
|
||||
--GenNum => Animacy => Case => Str
|
||||
++ (adjFormsAdjective ord).s ! gennum quant.g (numSizeNum num.size) ! Inanimate ! numSizeCase num.size ;
|
||||
s=\\g,a,cas => num.s ! g ! 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 ;
|
||||
g=quant.g ;
|
||||
c=quant.c ;
|
||||
size=num.size
|
||||
@@ -115,14 +113,14 @@ lin
|
||||
|
||||
-- : AdN -> Card -> Card
|
||||
AdNum adn card = card ** {
|
||||
s=\\g,a,c => adn.s ++ card.s ! g ! a ! c
|
||||
s=\\g,a,cas => adn.s ++ card.s ! g ! a ! cas
|
||||
} ;
|
||||
|
||||
---------------
|
||||
-- Common nouns
|
||||
|
||||
-- : AP -> CN -> CN ; -- big house - большой дом
|
||||
AdjCN ap cn = cn ** {s = \\n,c => preOrPost (notB ap.isPost) (ap.s ! (gennum cn.g n) ! cn.anim ! c) (cn.s ! n ! c)} ;
|
||||
AdjCN ap cn = cn ** {s = \\n,cas => preOrPost (notB ap.isPost) (ap.s ! (gennum cn.g n) ! cn.anim ! cas) (cn.s ! n ! cas)} ;
|
||||
|
||||
-- : N -> CN
|
||||
UseN n = nounFormsNoun n ;
|
||||
|
||||
@@ -10,7 +10,7 @@ lin
|
||||
-- : IP -> VP -> QCl ; -- who walks
|
||||
QuestVP ip vp = {
|
||||
subj=ip.nom ;
|
||||
adv=[] ;
|
||||
adv=vp.adv ! ip.a ;
|
||||
verb=vp.verb ;
|
||||
dep=vp.dep ;
|
||||
compl=vp.compl ! ip.a ; --???
|
||||
@@ -63,7 +63,7 @@ lin
|
||||
|
||||
-- : IDet -> CN -> IP ; -- which five songs
|
||||
IdetCN idet cn = caseTableToRecord (\\cas => idet.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum idet.size ! numSizeCase idet.size)
|
||||
++ cn.s ! numSizeNum cas idet.size ! numSizeCase cas idet.size)
|
||||
(Ag (gennum cn.g (numSizeNumber idet.size)) P3) cn.anim ;
|
||||
|
||||
-- : IDet -> IP ; -- which five
|
||||
|
||||
@@ -1183,13 +1183,6 @@ oper
|
||||
Num2_4 => "тысячи" ; -- NumAll ?
|
||||
_ => "тысяч"
|
||||
} ;
|
||||
sizeNumCase : (Number => Case => Str) -> NumSize -> Str
|
||||
= \nt,size -> case size of {
|
||||
Num1 => nt ! Sg ! Nom ;
|
||||
Num2_4 => nt ! Sg ! Gen ; --?
|
||||
Num5 => nt ! Pl ! Gen ;
|
||||
NumAll => nt ! Pl ! Nom
|
||||
} ;
|
||||
|
||||
---------------
|
||||
-- Adverbs -- Наречия
|
||||
@@ -1215,10 +1208,20 @@ oper
|
||||
= \ns -> case ns of {Num1 => Sg ; NumAll | Num2_4 | Num5 => Pl} ;
|
||||
|
||||
-- The following two used in tandem to form the word, controlled by numeral
|
||||
numSizeNum : NumSize -> Number
|
||||
= \ns -> case ns of {Num1 | Num2_4 => Sg ; Num5 | NumAll => Pl} ;
|
||||
numSizeCase : NumSize -> Case
|
||||
= \ns -> case ns of {Num1 | NumAll => Nom ; Num2_4 | Num5 => Gen} ;
|
||||
numSizeNum : Case -> NumSize -> Number
|
||||
= \cas,ns -> case <cas,ns> of {
|
||||
<Nom|Acc,Num2_4> => Sg ;
|
||||
<_,Num1> => Sg ;
|
||||
_ => Pl
|
||||
} ;
|
||||
numSizeCase : Case -> NumSize -> Case
|
||||
= \cas,ns -> case <cas,ns> of {
|
||||
<Nom,Num1 | NumAll> => Nom ;
|
||||
<Nom,Num2_4 | Num5> => Gen ;
|
||||
<Acc,Num1 | NumAll> => Nom ;
|
||||
<Acc,Num2_4 | Num5> => Gen ;
|
||||
_ => cas
|
||||
} ;
|
||||
|
||||
oper -- TODO:
|
||||
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
||||
|
||||
@@ -12,8 +12,8 @@ lin
|
||||
Infinitive => let parts = R.verbAgr cl.verb Infinitive temp.t cl.a pol.p in
|
||||
temp.s ++ parts.p1 ++ cl.subj ++ pol.s ++ cl.adv ++ parts.p2 ++ cl.dep ++ cl.compl ;
|
||||
Ind => let parts = R.verbAgr cl.verb Ind temp.t cl.a pol.p in
|
||||
-- temp.s ++ parts.p1 ++ cl.subj ++ pol.s ++ cl.adv ++ parts.p2 ++ cl.dep ++ cl.compl ;
|
||||
temp.s ++ cl.adv ++ pol.s ++ parts.p1 ++ parts.p2 ++ cl.dep ++ cl.subj ++ cl.compl ;
|
||||
temp.s ++ parts.p1 ++ cl.subj ++ pol.s ++ cl.adv ++ parts.p2 ++ cl.dep ++ cl.compl ;
|
||||
-- temp.s ++ cl.adv ++ pol.s ++ parts.p1 ++ parts.p2 ++ cl.dep ++ cl.subj ++ cl.compl ;
|
||||
Sbjv => let parts = R.verbAgr cl.verb Sbjv temp.t cl.a pol.p in
|
||||
temp.s ++ parts.p1 ++ cl.subj ++ pol.s ++ cl.adv ++ parts.p2 ++ cl.dep ++ cl.compl ;
|
||||
Imperative => let parts = R.verbAgr cl.verb Imperative temp.t cl.a pol.p in
|
||||
@@ -102,7 +102,7 @@ lin
|
||||
-- : NP -> VP -> Cl ; -- John walks - Иван гуляет
|
||||
PredVP np vp = {
|
||||
subj=np.s ! Nom ;
|
||||
adv=[] ;
|
||||
adv=vp.adv ! np.a ;
|
||||
verb=vp.verb ;
|
||||
dep=vp.dep ;
|
||||
compl=vp.compl ! np.a ;
|
||||
@@ -112,7 +112,7 @@ lin
|
||||
-- : SC -> VP -> Cl ; -- that she goes is good - что она идёт есть хорошо
|
||||
PredSCVP sc vp = {
|
||||
subj=sc.s ;
|
||||
adv=[] ;
|
||||
adv=vp.adv ! (Ag (GSg Neut) P3) ; -- ???
|
||||
verb=vp.verb ;
|
||||
dep=vp.dep ;
|
||||
compl=vp.compl ! Ag (GSg Neut) P3 ; -- ???
|
||||
|
||||
@@ -144,8 +144,8 @@ lin
|
||||
<Animate,Acc> => "скольких" -- also as Nom?
|
||||
} ;
|
||||
g=Neut ;
|
||||
size=NumAll ; --it depends???
|
||||
c=Nom --???
|
||||
size=Num5 ; --it depends???
|
||||
c=Gen --???
|
||||
} ;
|
||||
|
||||
almost_AdA = ss "почти" ;
|
||||
|
||||
@@ -23,7 +23,7 @@ lin
|
||||
|
||||
-- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and
|
||||
CNSymbNP det cn xs = {
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ sizeNumCase cn.s det.size ++ xs.s ;
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ++ xs.s ;
|
||||
pron=False ;
|
||||
a=Ag (gennum cn.g (numSizeNumber det.size)) P3
|
||||
} ;
|
||||
|
||||
@@ -20,7 +20,7 @@ lin
|
||||
-- : VV -> VP -> VP ; -- want to run
|
||||
ComplVV vv vp = vp ** {
|
||||
verb=vv.v ;
|
||||
dep=verbInf vp.verb ;
|
||||
dep=verbInf vp.verb ++ vp.dep ;
|
||||
adv=\\a=>vv.modal ! a ++ vp.adv ! a
|
||||
} ;
|
||||
|
||||
@@ -111,7 +111,7 @@ lin
|
||||
|
||||
-- : VPSlash -> NP -> VP ; -- love it
|
||||
ComplSlash vps np = vps ** {
|
||||
compl=\\a => vps.compl ! a ++ (applyPrep vps.c np) -- hasPrep? order?
|
||||
compl=\\a => vps.compl ! np.a ++ (applyPrep vps.c np) -- hasPrep? order? compl agr lost?
|
||||
} ;
|
||||
|
||||
-- : VV -> VPSlash -> VPSlash ; -- want to buy
|
||||
|
||||
@@ -894,7 +894,8 @@ oper
|
||||
<I | I', i+("ать"|"ять"), s2, s3> => 6 ;
|
||||
<II, i+"ить", s2, s3> => 4 ; -- после шип -- here and below alternations possible
|
||||
<II, i+("ать"|"ять"|"еть"), s2, s3> => 5 ;
|
||||
_ => Predef.error ("Error: guessing verb conjugation does not work for:" + sg1 + sg3.p1 + ":" + inf + ":" + sgP1PresFut + ":" + sgP3PresFut)
|
||||
-- _ => 1
|
||||
_ => Predef.error ("Error: guessing verb conjugation does not work for:" + sg1 + sg3.p1 + ":" + inf + ":" + sgP1PresFut + ":" + sgP3PresFut)
|
||||
} in <ZV conjtype No (VSS (case sg3.p2 of {I' => _B; _ => _A}) _A), refl> ;
|
||||
|
||||
makeVerb : Str -> Str -> Str -> ZVIndex -> Aspect -> Transitivity -> Reflexivity -> VerbForms
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# 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)))
|
||||
довольно менее узко , чем всё не существовает что &+ -то
|
||||
|
||||
@@ -18,9 +22,6 @@ LangRus: расстояние от вашего брат всего быть г
|
||||
> l (RelNP everybody_NP (UseRCl (TTAnt TFut ASimul) PPos (RelVP IdRP ill_VP)))
|
||||
все , которые будет больны
|
||||
|
||||
> l timeunitRange (NumDigits (IDig D_1)) (NumDigits (IDig D_2)) year_Timeunit
|
||||
от 1 до 2 года
|
||||
|
||||
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: это не не некоторые из всех , которые не будет готовы
|
||||
|
||||
@@ -37,3 +38,22 @@ AllRus: это не не некоторые из всех , которые не
|
||||
AllRusAbs: UttImpPol PPos (ImpVP (ComplSlash (Slash2V3 add_V3 everybody_NP) (PPartNP somebody_NP drink_V2)))
|
||||
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))))
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user