From 1d726ed95671671dcc15aa76e2f775b5179fa178 Mon Sep 17 00:00:00 2001 From: Roman Suzi Date: Sun, 16 Aug 2020 09:34:36 +0300 Subject: [PATCH] compound --- src/russian/DictRus.gf | 4 ++-- src/russian/DictRusAbs.gf | 4 ++-- src/russian/ExtraRus.gf | 3 +++ src/russian/ExtraRusAbs.gf | 1 + src/russian/ParadigmsRus.gf | 5 ++++- src/russian/ResRus.gf | 24 ++++++++++++++++++++++++ src/russian/test_rus_grammar.gfs | 2 ++ 7 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/russian/DictRus.gf b/src/russian/DictRus.gf index bf4674e20..c1b4939ab 100644 --- a/src/russian/DictRus.gf +++ b/src/russian/DictRus.gf @@ -36,7 +36,7 @@ lin avtor_N = mkN "автор" Masc Animate n1a ; baba_N = mkN "баба" Fem Animate n1a ; babushka_N = mkN "бабушка" Fem Animate (ZN 3 Ast A NoC) ; - bank_N = mkN "банк" Masc Inanimate n3a ; + bank__N = mkN "банк" Masc Inanimate n3a ; baza_N = mkN "база" Fem Inanimate n1a ; beda_N = mkN "беда" Fem Inanimate (ZN 1 No D NoC) ; bereg_N = mkN "берег" Masc Inanimate (ZN 3 No C ZC1) ; @@ -770,7 +770,7 @@ lin stroj_N = mkN "строй" Masc Inanimate (ZN 6 No A NoC) ; stroka_N = mkN "строка" Fem Inanimate (ZN 3 No D NoC) ; struktura_N = mkN "структура" Fem Inanimate n1a ; - student_N = mkN "студент" Masc Animate n1a ; + student__N = mkN "студент" Masc Animate n1a ; stul_N = mkN "стул" Masc Inanimate n1a ; sub6ekt_N = mkN "субъект" Masc Inanimate n1a ; sud_N = mkN "суд" Masc Inanimate (ZN 1 No B NoC) ; diff --git a/src/russian/DictRusAbs.gf b/src/russian/DictRusAbs.gf index c417dc538..031383235 100644 --- a/src/russian/DictRusAbs.gf +++ b/src/russian/DictRusAbs.gf @@ -21,7 +21,7 @@ fun avtor_N : N; baba_N : N; babushka_N : N; - bank_N : N; + bank__N : N; baza_N : N; beda_N : N; bereg_N : N; @@ -755,7 +755,7 @@ fun stroj_N : N; stroka_N : N; struktura_N : N; - student_N : N; + student__N : N; stul_N : N; sub6ekt_N : N; sud_N : N; diff --git a/src/russian/ExtraRus.gf b/src/russian/ExtraRus.gf index 0ebcd6774..de07c0348 100644 --- a/src/russian/ExtraRus.gf +++ b/src/russian/ExtraRus.gf @@ -21,6 +21,9 @@ lin have_not_V3 = P.mkV3 net_V obj_neg_Prep u_Prep; be_V3 = P.mkV3 be_ell_V nom_Prep dat_Prep; + -- : A -> A -> A ; + CompoundA a1 a2 = mkCompoundA a1 "-" a2 ; + oper est_V : V = lin V { inf="есть"; diff --git a/src/russian/ExtraRusAbs.gf b/src/russian/ExtraRusAbs.gf index 8b181a1ef..ee01e8742 100644 --- a/src/russian/ExtraRusAbs.gf +++ b/src/russian/ExtraRusAbs.gf @@ -16,4 +16,5 @@ fun to2_Prep : Prep ; to_dat_Prep : Prep ; u_Prep : Prep ; + CompoundA : A -> A -> A ; } diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index d612472cb..80fd474aa 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -130,7 +130,8 @@ oper mkA : Str -> Str -> (idx : Str) -> ShortFormPreference -> A ; -- same, but with short form preference given mkA : Str -> ZAIndex -> A ; mkA : Str -> Str -> ZAIndex -> A ; - mkA : Str -> Str -> ZAIndex -> ShortFormPreference -> A + mkA : Str -> Str -> ZAIndex -> ShortFormPreference -> A ; + mkA : A -> Str -> A -> A -- Compound adjective like социально-экономический } ; ShortenA : A -> A ; @@ -291,6 +292,8 @@ oper = \nom, comp, zi, spf -> lin A (makeAdjectiveFormsUseIndex nom comp zi spf) ; mkA : PronForms -> A = \pf -> pronToAdj pf ; + mkA : A -> Str -> A -> A + = \a1,link,a2 -> lin A (mkCompoundA a1 link a2) ; } ; ShortenA : A -> A diff --git a/src/russian/ResRus.gf b/src/russian/ResRus.gf index 2b2af7f44..412c13e55 100644 --- a/src/russian/ResRus.gf +++ b/src/russian/ResRus.gf @@ -550,6 +550,30 @@ oper Ag GPl _ => af.sp } ; + mkCompoundA : AdjForms -> Str -> AdjForms -> AdjForms + = \a1,link,a2 -> + let l : Str=case link of {x+"-" => BIND ++ "-" ++ BIND ; _ => link} in + a2 ** { + msnom = a1.sn ++ l ++ a2.msnom ; + fsnom = a1.sn ++ l ++ a2.fsnom ; + nsnom = a1.sn ++ l ++ a2.nsnom ; + pnom = a1.sn ++ l ++ a2.pnom ; + msgen = a1.sn ++ l ++ a2.msgen ; + fsgen = a1.sn ++ l ++ a2.fsgen ; + pgen = a1.sn ++ l ++ a2.pgen ; + msdat = a1.sn ++ l ++ a2.msdat ; + fsacc = a1.sn ++ l ++ a2.fsacc ; + msins = a1.sn ++ l ++ a2.msins ; + fsins = a1.sn ++ l ++ a2.fsins ; + pins = a1.sn ++ l ++ a2.pins ; + msprep= a1.sn ++ l ++ a2.msprep; + sm = a1.sn ++ l ++ a2.sm ; + sf = a1.sn ++ l ++ a2.sf ; + sn = a1.sn ++ l ++ a2.sn ; + sp = a1.sn ++ l ++ a2.sp ; + comp = a1.sn ++ l ++ a2.comp ; + } ; + --------------------- -- Verbs -- Глаголы diff --git a/src/russian/test_rus_grammar.gfs b/src/russian/test_rus_grammar.gfs index 6f0ac6b23..180f09f26 100644 --- a/src/russian/test_rus_grammar.gfs +++ b/src/russian/test_rus_grammar.gfs @@ -219,6 +219,8 @@ gt ProgrVP (ComplDirectVQ know_VQ (UttAdv (weekdayNextAdv sunday_Weekday))) | l gt UseCl (TTAnt TFut AAnter) PPos (PredVP (UsePN john_PN) (ComplDirectVS say_VS (UttAdv (weekdayNextAdv sunday_Weekday)))) | l -treebank gt UseCl (TTAnt TPast AAnter) PPos (PredVP (UsePN john_PN) (ComplDirectVQ know_VQ (UttAdv (weekdayNextAdv sunday_Weekday)))) | l -treebank +gr CompoundA yellow_A red_A | l -treebank + gt has_age_VP ( (AdNum at_least_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8))))))) ) |l -treebank gt UseCl ? ? (PredVP (UsePN john_PN) ( has_age_VP ( (AdNum at_least_AdN (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n8))))))) ) ) ) |l -treebank