From 6ad61614b8104b88ae1e6e2644ba84cd2f13cdb8 Mon Sep 17 00:00:00 2001 From: Roman Suzi Date: Sun, 2 Aug 2020 22:27:22 +0300 Subject: [PATCH] Some refactorings --- src/russian/AllRus.gf | 2 +- src/russian/ConstructionRus.gf | 4 +-- src/russian/ExtendRus.gf | 63 +++++++++++++++++++++------------- src/russian/GrammarRus.gf | 2 +- src/russian/TenseRus.gf | 7 ++-- 5 files changed, 46 insertions(+), 32 deletions(-) diff --git a/src/russian/AllRus.gf b/src/russian/AllRus.gf index a461baea..3d13fd9d 100644 --- a/src/russian/AllRus.gf +++ b/src/russian/AllRus.gf @@ -1,3 +1,3 @@ --# -path=.:../abstract:../common:../api -concrete AllRus of AllRusAbs = LangRus, ExtraRus ** open ExtendRus in {flags coding=utf8;} \ No newline at end of file +concrete AllRus of AllRusAbs = LangRus, ExtraRus, ExtendRus ** {flags coding=utf8;} \ No newline at end of file diff --git a/src/russian/ConstructionRus.gf b/src/russian/ConstructionRus.gf index 1d6a88cb..534de854 100644 --- a/src/russian/ConstructionRus.gf +++ b/src/russian/ConstructionRus.gf @@ -2,7 +2,7 @@ concrete ConstructionRus of Construction = CatRus ** open Predef, SyntaxRus, SymbolicRus, (P=ParadigmsRus), ResRus, Prelude, QuestionRus, SentenceRus, AdverbRus, AdjectiveRus, VerbRus, (L=LexiconRus), - (N=NounRus), IdiomRus, (E=ExtendRus), (EX=ExtraRus) in { + (N=NounRus), IdiomRus, (EX=ExtraRus) in { lin hungry_VP = mkVP (P.mkA "голодный" "" "1*a/c'" PrefShort) ; @@ -13,7 +13,7 @@ lin ready_VP = mkVP L.ready_A ; -- : 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 "звать" "зову" "зовёт") Acc)) np) ; + what_name_QCl np = QuestIAdv how_IAdv (GenericCl (ComplSlash (SlashV2a (P.mkV2 (P.mkV Imperfective "звать" "зову" "зовёт") Acc)) np)) ; -- : NP -> NP -> Cl ; -- x's name is y / x s'appelle y (Fre) have_name_Cl np np1 = { diff --git a/src/russian/ExtendRus.gf b/src/russian/ExtendRus.gf index b6cbc5fb..a415d403 100644 --- a/src/russian/ExtendRus.gf +++ b/src/russian/ExtendRus.gf @@ -2,32 +2,36 @@ concrete ExtendRus of Extend = CatRus ** ExtendFunctor - [ - -- iFem_Pron, - theyFem_Pron, weFem_Pron, - -- youFem_Pron, - youPlFem_Pron, youPolFem_Pron, youPolPlFem_Pron, youPolPl_Pron, - VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList, - UseComp, RelNP, UseComp_estar, SubjRelNP, PredAPVP, ImpersCl, UseComp, CompAP, EmbedVP, ExistNP, UseQCl, - QuestCl, ExistNP, UseQCl, ExistIP, AdvVP, AdvVP, AdvVP, UseComp, CompAP, ExistS, ExistNPQS, ExistIPQS, - ComplDirectVS, ComplDirectVQ, AdvIsNPAP, AdAdV, AdjAsCN, AdjAsNP, - -- ApposNP, - AdvIsNP, - BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2, - MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV, - MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, - Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, - CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, - CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPMasc, DetNPFem, EmbedPresPart, EmptyRelSlash, - ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, ProDrop, - FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, - GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP, - PassAgentVPSlash, PassVPSlash, ProgrVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, - EmbedSSlash, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, - -- PredIAdvVP, - UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 + iFem_Pron, + -- theyFem_Pron, weFem_Pron, + youFem_Pron, + -- youPlFem_Pron, youPolFem_Pron, youPolPlFem_Pron, youPolPl_Pron, + -- VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList, + -- UseComp, RelNP, UseComp_estar, SubjRelNP, PredAPVP, ImpersCl, UseComp, CompAP, EmbedVP, ExistNP, UseQCl, + -- QuestCl, ExistNP, UseQCl, ExistIP, AdvVP, AdvVP, AdvVP, UseComp, CompAP, ExistS, ExistNPQS, ExistIPQS, + -- ComplDirectVS, ComplDirectVQ, AdvIsNPAP, AdAdV, AdjAsCN, AdjAsNP, + ApposNP, + -- AdvIsNP, + -- BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2, + -- MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV, + -- MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2, + -- Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, + -- CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, + -- CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPMasc, DetNPFem, EmbedPresPart, EmptyRelSlash, + -- ExistsNP, ExistCN, ExistMassCN, ExistPluralCN, ProDrop, + -- FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, + -- GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, + InOrderToVP, + -- MkVPS, NominalizeVPSlashNP, + -- PassAgentVPSlash, PassVPSlash, ProgrVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, + -- EmbedSSlash, PresPartAP, + PurposeVP, + -- ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, + PredIAdvVP + -- UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 ] with (Grammar=GrammarRus) - ** open Prelude, ResRus, ParadigmsRus, (E=Extend) in { + ** open Prelude, ResRus, ParadigmsRus in { lincat RNP = {s : Agr => Str} ; @@ -37,12 +41,23 @@ lin -- : NP -> NP -> NP ; -- Mr Macron, the president of France, ApposNP np np2 = { s=\\cas=> np.s ! cas ++ embedInCommas (np2.s ! cas) ; + pron=False ; a=np.a } ; -- : IAdv -> VP -> QCl ; -- how to walk? PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk + -- : VP -> Adv ; -- (in order) to publish the document + InOrderToVP vp = lin Adv ({ + s = "чтобы" ++ vp.adv ! Ag (GSg Neut) P3 ++ (verbInf vp.verb) ++ vp.dep ++ vp.compl ! Ag (GSg Neut) P3 + }) ; + + -- : VP -> Adv ; -- to become happy + PurposeVP vp = lin Adv ({ + s = vp.adv ! Ag (GSg Neut) P3 ++ (verbInf vp.verb) ++ vp.dep ++ vp.compl ! Ag (GSg Neut) P3 + }) ; + iFem_Pron = personalPron (Ag (GSg Fem) P1) ; youFem_Pron = personalPron (Ag (GSg Fem) P2) ; } ; diff --git a/src/russian/GrammarRus.gf b/src/russian/GrammarRus.gf index fdeb83e4..2973754c 100644 --- a/src/russian/GrammarRus.gf +++ b/src/russian/GrammarRus.gf @@ -11,7 +11,7 @@ concrete GrammarRus of Grammar = RelativeRus, ConjunctionRus, PhraseRus, - TextRus, + TextX, StructuralRus, IdiomRus, TenseRus diff --git a/src/russian/TenseRus.gf b/src/russian/TenseRus.gf index 5648d438..02ee7297 100644 --- a/src/russian/TenseRus.gf +++ b/src/russian/TenseRus.gf @@ -1,13 +1,12 @@ -concrete TenseRus of Tense = CatRus, TenseX - [PNeg,PPos] - ** open ResRus, (P=ParamRus), Prelude in { +concrete TenseRus of Tense = TenseX - [PNeg,PPos] ** open (R = ParamX) in { flags coding=utf8 ; optimize=all ; lin PNeg = { s = "не" ; - p = Neg + p = R.Neg } ; PPos = { s = [] ; - p = Pos + p = R.Pos } ; }