From 5c1183ebc84f16ff1617b725ddddf19c86352ba3 Mon Sep 17 00:00:00 2001 From: "kr.angelov" Date: Fri, 31 Aug 2012 09:31:36 +0000 Subject: [PATCH] extensions to the English and the Bulgarian grammars. Infinitives with polarity and anteriority --- lib/src/bulgarian/CatBul.gf | 2 +- lib/src/bulgarian/ConjunctionBul.gf | 43 +++++-- lib/src/bulgarian/DictEngBul.gf | 183 ++++++++++++++-------------- lib/src/bulgarian/ExtraBul.gf | 2 +- lib/src/bulgarian/IdiomBul.gf | 2 +- lib/src/bulgarian/MorphoFunsBul.gf | 9 +- lib/src/bulgarian/ParseEngBul.gf | 12 +- lib/src/bulgarian/PhraseBul.gf | 2 +- lib/src/bulgarian/ResBul.gf | 22 +++- lib/src/bulgarian/SentenceBul.gf | 2 +- lib/src/bulgarian/VerbBul.gf | 12 +- lib/src/english/BackwardEng.gf | 4 +- lib/src/english/DictEng.gf | 12 +- lib/src/english/DictEngAbs.gf | 10 +- lib/src/english/ExtraEng.gf | 4 +- lib/src/english/IdiomEng.gf | 4 +- lib/src/english/ParseEng.gf | 34 ++++-- lib/src/english/ParseEngAbs.gf | 9 +- lib/src/english/PhraseEng.gf | 2 +- lib/src/english/ResEng.gf | 21 ++-- lib/src/english/SentenceEng.gf | 4 +- lib/src/english/VerbEng.gf | 8 +- 22 files changed, 247 insertions(+), 156 deletions(-) diff --git a/lib/src/bulgarian/CatBul.gf b/lib/src/bulgarian/CatBul.gf index 6781d8ea7..27b620231 100644 --- a/lib/src/bulgarian/CatBul.gf +++ b/lib/src/bulgarian/CatBul.gf @@ -78,7 +78,7 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv] ** open ResBul, Prelude, Predef, V2, V2A = Verb ** {c2 : Preposition} ; V2V, V2S, V2Q = Verb ** {c2 : Preposition} ; --- AR V3 = Verb ** {c2, c3 : Preposition} ; - VV = Verb ; + VV = Verb ** {typ : VVType}; A = {s : AForm => Str; adv : Str} ; A2 = {s : AForm => Str; adv : Str; c2 : Str} ; diff --git a/lib/src/bulgarian/ConjunctionBul.gf b/lib/src/bulgarian/ConjunctionBul.gf index c02f9f88a..b425d0a4e 100644 --- a/lib/src/bulgarian/ConjunctionBul.gf +++ b/lib/src/bulgarian/ConjunctionBul.gf @@ -14,22 +14,30 @@ concrete ConjunctionBul of Conjunction = s = (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj; } ; + ConjIAdv conj ss = { + s = \\qform => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!qform; + } ; + ConjNP conj ss = { s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role; a = {gn = conjGenNum (gennum (AMasc NonHuman) conj.n) ss.a.gn; p = ss.a.p} } ; - ---- RS rules by AR 7/4/2010 to make API compile - ConjRS conj ss = { - s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role - } ; - ConjAP conj ss = { s = \\aform => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!aform; adv = (linCoordSep [])!conj.distr!conj.conj++ss.adv!conj.distr!conj.conj; isPre = ss.isPre } ; + ConjRS conj ss = { + s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role + } ; + + ConjCN conj ss = { + s = \\nform => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!nform; + g = ss.g + } ; + -- These fun's are generated from the list cat's. BaseS x y = {s = \\d,t=>x.s++linCoord!t++ y.s} ; ConsS x xs = {s = \\d,t=>x.s++(linCoordSep comma)!d!t++xs.s!d!t} ; @@ -37,6 +45,9 @@ concrete ConjunctionBul of Conjunction = BaseAdv x y = {s = \\d,t=>x.s++linCoord!t++ y.s} ; ConsAdv x xs = {s = \\d,t=>x.s++(linCoordSep comma)!d!t++xs.s!d!t} ; + BaseIAdv x y = {s = \\d,t,qform=>x.s!qform++linCoord!t++ y.s!qform} ; + ConsIAdv x xs = {s = \\d,t,qform=>x.s!qform++(linCoordSep comma)!d!t++xs.s!d!t!qform} ; + BaseNP x y = {s = \\d,t,role=>x.s!role++linCoord!t++y.s!role; a = conjAgr x.a y.a} ; @@ -44,11 +55,6 @@ concrete ConjunctionBul of Conjunction = {s = \\d,t,role=>x.s!role++(linCoordSep comma)!d!t++xs.s!d!t!role; a = conjAgr xs.a x.a} ; - BaseRS x y = - {s = \\d,t,role=>x.s!role++linCoord!t++y.s!role} ; - ConsRS x xs = - {s = \\d,t,role=>x.s!role++(linCoordSep comma)!d!t++xs.s!d!t!role} ; - BaseAP x y = {s = \\d,t,aform=>x.s!aform++linCoord!t++y.s!aform; adv= \\d,t =>x.adv ++linCoord!t++y.adv; @@ -58,10 +64,25 @@ concrete ConjunctionBul of Conjunction = adv= \\d,t =>x.adv ++(linCoordSep comma)!d!t++xs.adv!d!t; isPre = andB x.isPre xs.isPre} ; + BaseRS x y = + {s = \\d,t,role=>x.s!role++linCoord!t++y.s!role} ; + ConsRS x xs = + {s = \\d,t,role=>x.s!role++(linCoordSep comma)!d!t++xs.s!d!t!role} ; + + BaseCN x y = + {s = \\d,t,nform=>x.s!nform++linCoord!t++y.s!nform; + g = x.g} ; + ConsCN x xs = + {s = \\d,t,nform=>x.s!nform++(linCoordSep comma)!d!t++xs.s!d!t!nform; + g = x.g} ; + lincat [S] = {s : Bool => Ints 2 => Str} ; [Adv] = {s : Bool => Ints 2 => Str} ; + [IAdv] = {s : Bool => Ints 2 => QForm => Str} ; [NP] = {s : Bool => Ints 2 => Role => Str; a : Agr} ; - [RS] = {s : Bool => Ints 2 => Agr => Str} ; [AP] = {s : Bool => Ints 2 => AForm => Str; adv : Bool => Ints 2 => Str; isPre : Bool} ; + [RS] = {s : Bool => Ints 2 => Agr => Str} ; + [CN] = {s : Bool => Ints 2 => NForm => Str; g : AGender} ; + } diff --git a/lib/src/bulgarian/DictEngBul.gf b/lib/src/bulgarian/DictEngBul.gf index 82cadb3c7..2f3c0c642 100644 --- a/lib/src/bulgarian/DictEngBul.gf +++ b/lib/src/bulgarian/DictEngBul.gf @@ -1212,7 +1212,7 @@ lin anchorite_N = variants {}; lin anchorman_N = variants {}; lin anchovy_N = variants {}; lin ancient_A = mkA078 "старовремски" ; -lin ancillary_A = variants {}; +lin ancillary_A = mkA076 "подчинен"; lin ancona_PN = variants {}; lin and_Conj = {s=[]; conj=0; distr=False; n = Pl}; lin andante_A = variants {}; @@ -1566,7 +1566,7 @@ lin applique_V2 = variants {}; lin apply_V = stateV (mkV186 "кандидатствам"); lin apply_V2 = dirV2 (actionV (mkV186 "прилагам") (mkV176 "приложа")); lin apply_V2V = variants {}; -lin apply_VV = stateV (mkV186 "кандидатствам"); +lin apply_VV = mkVV (stateV (mkV186 "кандидатствам")); lin appoint_V2 = variants {}; lin appoint_V2V = variants {}; lin appoint_VS = variants {}; @@ -1959,8 +1959,8 @@ lin assent_N = variants {}; lin assent_V = variants {}; lin assert_V = variants {}; lin assert_V2 = variants {}; -lin assert_VS = variants {}; -lin assertion_N = variants {}; +lin assert_VS = mkVS (stateV (mkV174 "твърдя")); +lin assertion_N = mkN072 "твърдение"; lin assertive_A = variants {}; lin assess_V2 = variants {}; lin assessment_N = mkN041 "преценка" ; @@ -3094,8 +3094,8 @@ lin belgrade_PN = variants {}; lin belie_V2 = variants {}; lin belief_N = variants {}; lin believable_A = mkA079 "вероятен" ; -lin believe_V = variants {}; -lin believe_V2 = variants {}; +lin believe_V = stateV (mkV186 "вярвам"); +lin believe_V2 = prepV2 (stateV (mkV186 "вярвам")) (mkPrep "на" Acc); lin believe_V2V = variants {}; lin believe_VS = variants {}; lin believer_N = variants {}; @@ -3563,8 +3563,8 @@ lin blah_N = variants {}; lin blaina_PN = variants {}; lin blairgowrie_PN = variants {}; lin blame_N = variants {}; -lin blame_V = variants {}; -lin blame_V2 = variants {}; +lin blame_V = actionV (mkV186 "обвинявам") (mkV174 "обвиня"); +lin blame_V2 = dirV2 (actionV (mkV186 "обвинявам") (mkV174 "обвиня")); lin blameless_A = variants {}; lin blameworthy_A = variants {}; lin blanch_V = variants {}; @@ -4257,7 +4257,7 @@ lin breakable_A = variants {}; lin breakage_N = variants {}; lin breakaway_N = variants {}; lin breakaways_N = variants {}; -lin breakdown_N = variants {}; +lin breakdown_N = mkN001 "срив"; lin breaker_N = variants {}; lin breakfast_N = mkN041 "закуска" ; lin breakfast_V = actionV (mkV186 "закусвам") (mkV173 "закуся"); @@ -7191,7 +7191,7 @@ lin comprise_V2 = variants {}; lin compromise_N = mkN007 "компромис" ; lin compromise_V = variants {}; lin compromise_V2 = variants {}; -lin comptroller_N = variants {}; +lin comptroller_N = mkN007a "контрольор" ; lin compulsion_N = variants {}; lin compulsive_A = variants {}; lin compulsory_A = variants {}; @@ -9763,18 +9763,18 @@ lin deshabille_N = variants {}; lin desiccant_N = variants {}; lin desiccate_V2 = variants {}; lin desideratum_N = variants {}; -lin design_N = mkN071 "проектиране" ; -lin design_V = variants {}; -lin design_V2 = variants {}; -lin design_V2V = variants {}; -lin designate_A = variants {}; -lin designate_V = variants {}; -lin designate_V2 = variants {}; +lin design_N = mkN007 "дизайн"; +lin design_V = stateV (mkV186 "проектирам"); +lin design_V2 = dirV2 (stateV (mkV186 "проектирам")); +lin design_V2V = mkV2V (stateV (mkV186 "проектирам")) noPrep noPrep; +lin designate_A = mkA076 "предназначен"; +lin designate_V = actionV (mkV186 "предназначавам") (mkV176 "предназнача"); +lin designate_V2 = dirV2 (actionV (mkV186 "предназначавам") (mkV176 "предназнача")); lin designate_V2V = variants {}; lin designate_VS = variants {}; lin designation_N = mkN072 "предназначение" ; lin designedly_Adv = variants {}; -lin designer_N = variants {}; +lin designer_N = mkN007a "дизайнер"; lin designing_A = variants {}; lin designing_N = variants {}; lin desirability_N = variants {}; @@ -10161,17 +10161,17 @@ lin dipstick_N = variants {}; lin diptych_N = variants {}; lin dir_N = variants {}; lin dire_A = variants {}; -lin direct_A = mkA079 "директен" ; +lin direct_A = mkA079 "директен"; lin direct_Adv = variants {}; lin direct_V = variants {}; lin direct_V2 = variants {}; lin direct_VS = variants {}; -lin direction_N = mkN072 "управление" ; +lin direction_N = mkN072 "направление"; lin direction_finder_N = variants {}; lin directional_A = variants {}; -lin directive_N = mkN047 "дирекция" ; +lin directive_N = mkN041 "директива"; lin directness_N = variants {}; -lin director_N = mkN007a "режисьор" ; +lin director_N = mkN007a "директор"; lin directorate_N = mkN071 "контраразузнаване" ; lin directorship_N = mkN054 "директорство" ; lin directory_N = variants {}; @@ -11409,10 +11409,10 @@ lin dyspeptic_A = variants {}; lin dyspeptic_N = variants {}; lin e'en_Adv = variants {}; lin e'er_Adv = variants {}; -lin each_Det = variants {}; +lin each_Det = mkDeterminerSg "всеки" "всяка" "всяко"; lin eager_A = variants {}; lin eagerness_N = variants {}; -lin eagle_N = variants {}; +lin eagle_N = mkN008 "орел"; lin eagle_eyed_A = variants {}; lin eaglescliffe_PN = variants {}; lin eaglet_N = variants {}; @@ -11432,7 +11432,7 @@ lin early_warning_A = variants {}; lin earmark_N = variants {}; lin earmark_V2 = variants {}; lin earn_V = variants {}; -lin earn_V2 = variants {}; +lin earn_V2 = dirV2 (actionV (mkV186 "спечелвам") (mkV173 "спечеля")); lin earn_VA = variants {}; lin earnest_A = variants {}; lin earnest_N = variants {}; @@ -11580,7 +11580,7 @@ lin education_N = mkN049 "образованост" ; lin educational_A = mkA079 "образователен" ; lin educationalist_N = variants {}; lin educationist_N = variants {}; -lin educator_N = variants {}; +lin educator_N = mkN031a "учител"; lin educe_V2 = variants {}; lin edward_PN = variants {}; lin edwardian_A = variants {}; @@ -13209,7 +13209,7 @@ lin fawn_N = variants {}; lin fawn_V = variants {}; lin fbi_PN = variants {}; lin fealty_N = variants {}; -lin fear_N = variants {}; +lin fear_N = mkN001 "страх"; lin fear_V = variants {}; lin fear_V2 = variants {}; lin fear_VS = variants {}; @@ -14154,7 +14154,7 @@ lin foregone_A = variants {}; lin foreground_N = variants {}; lin forehand_A = variants {}; lin forehead_N = variants {}; -lin foreign_A = mkA079 "уличен" ; +lin foreign_A = mkA079 "външен"; lin foreigner_N = variants {}; lin foreknow_V = variants {}; lin foreknow_V2 = variants {}; @@ -14489,7 +14489,7 @@ lin frequent_A = variants {}; lin frequent_V2 = variants {}; lin fresco_N = variants {}; lin fresco_V2 = variants {}; -lin fresh_A = mkA076 "зелен" ; +lin fresh_A = mkA076 "свеж"; lin fresh_Adv = variants {}; lin freshen_V = variants {}; lin freshen_V2 = variants {}; @@ -15185,7 +15185,7 @@ lin gesticulation_N = mkN047 "жестикулация"; lin gesture_N = mkN001 "жест"; lin gesture_V = stateV (mkV186 "жестикулирам"); lin get_V = variants {}; -lin get_V2 = variants {}; +lin get_V2 = dirV2 (actionV (mkV186 "получавам") (mkV176 "получа")); lin get_V2V = variants {}; lin get_VA = stateV (mkV186 "ставам"); lin get_VV = variants {}; @@ -15919,7 +15919,7 @@ lin grotty_A = variants {}; lin grouch_N = variants {}; lin grouch_V = variants {}; lin grouchy_A = variants {}; -lin ground_N = mkN007 "терен" ; +lin ground_N = mkN041 "основа"; lin ground_V = variants {}; lin ground_V2 = variants {}; lin ground_bait_N = variants {}; @@ -15943,7 +15943,7 @@ lin grouse_VS = variants {}; lin grove_N = variants {}; lin grovel_V = variants {}; lin groveller_N = variants {}; -lin grow_V = variants {}; +lin grow_V = stateV (mkV145 "раста"); lin grow_V2 = variants {}; lin grow_V2V = variants {}; lin grow_VA = variants {}; @@ -16806,21 +16806,22 @@ lin helmeted_A = variants {}; lin helmsman_N = variants {}; lin helot_N = variants {}; lin help_N = mkN049 "помощ" ; -lin help_V = variants {}; -lin help_V2 = variants {}; -lin help_V2V = variants {}; -lin help_VV = variants {}; +lin help_V = actionV (mkV186 "помагам") (mkV152 "помогна"); +lin help_V2 = prepV2 (actionV (mkV186 "помагам") (mkV152 "помогна")) (mkPrep "на" Acc); +lin help_V2V = mkV2V (actionV (mkV186 "помагам") (mkV152 "помогна")) (mkPrep "на" Acc) noPrep; +lin help_VV = mkVV (actionV (mkV186 "помагам") (mkV152 "помогна")); lin help_VS = variants {}; -lin helper_N = variants {}; -lin helpful_A = variants {}; -lin helpfulness_N = variants {}; +lin helperMasc_N = mkN007b "помагач"; +lin helperFem_N = mkN041 "помагачка"; +lin helpful_A = mkA079 "полезен"; +lin helpfulness_N = mkN049 "полезност"; lin helping_N = variants {}; -lin helpless_A = variants {}; -lin helplessness_N = variants {}; +lin helpless_A = mkA079 "безпомощен"; +lin helplessness_N = mkN049 "безпомощност"; lin helpmate_N = variants {}; lin helpmeet_N = variants {}; -lin helsinki_PN = variants {}; -lin helston_PN = variants {}; +lin helsinki_PN = mkPN "Хелзинки" Masc; +lin helston_PN = mkPN "Хелстън" Masc; lin helter_skelter_Adv = variants {}; lin helter_skelter_N = variants {}; lin helve_N = variants {}; @@ -18268,7 +18269,7 @@ lin incline_V2V = variants {}; lin inclose_V2 = variants {}; lin inclosure_N = variants {}; lin include_V = variants {}; -lin include_V2 = variants {}; +lin include_V2 = dirV2 (actionV (mkV186 "включвам") (mkV176 "включа")); lin include_VV = variants {}; lin inclusion_N = mkN071 "включване" ; lin inclusive_A = variants {}; @@ -19333,7 +19334,7 @@ lin israeli_A = variants {}; lin israeli_N = variants {}; lin issue_N = mkN001 "спор" ; lin issue_V = actionV (mkV186 "издавам") (mkV168 "издам"); -lin issue_V2 = variants {}; +lin issue_V2 = dirV2 (actionV (mkV186 "издавам") (mkV168 "издам")); lin istanbul_PN = mkPN "Истанбул" Masc; lin isthmus_N = variants {}; lin it_Pron = mkPron "то" "него" "му" "негов" "неговия" "неговият" "негова" "неговата" "негово" "неговото" "негови" "неговите" (GSg Neut) P3 ; @@ -19866,6 +19867,7 @@ lin keenness_N = variants {}; lin keep_N = variants {}; lin keep_V = variants {}; lin keep_V2 = variants {}; +lin keep_V2V = variants {}; lin keep_VA = variants {}; lin keep_VS = variants {}; lin keep_VV = variants {}; @@ -21960,7 +21962,7 @@ lin mammal_N = variants {}; lin mammon_N = variants {}; lin mammoth_N = variants {}; lin mammy_N = variants {}; -lin man_N = mkN007b "играч" ; +lin man_N = mkN024 "мъж"; lin man_V2 = variants {}; lin man_at_arms_N = variants {}; lin man_eater_N = variants {}; @@ -24794,7 +24796,7 @@ lin numeration_N = variants {}; lin numerator_N = variants {}; lin numeric_A = variants {}; lin numerical_A = variants {}; -lin numerous_A = mkA085 "броен" ; +lin numerous_A = mkA085 "многоброен"; lin numinous_A = variants {}; lin numismatics_N = variants {}; lin numismatist_N = variants {}; @@ -24985,7 +24987,7 @@ lin occupy_V = variants {}; lin occupy_V2 = variants {}; lin occur_V = variants {}; lin occurr_V2 = variants {}; -lin occurrence_N = variants {}; +lin occurrence_N = mkN071 "срещане"; lin ocean_N = mkN007 "океан" ; lin oceanic_A = mkA078 "океански" ; lin ochre_N = variants {}; @@ -26205,7 +26207,7 @@ lin paraguayan_A = variants {}; lin paraguayan_N = variants {}; lin parakeet_N = variants {}; lin parallel_A = mkA079 "паралелен" ; -lin parallel_N = variants {}; +lin parallel_N = mkN007 "паралел"; lin parallel_V2 = variants {}; lin parallelism_N = variants {}; lin parallelogram_N = variants {}; @@ -27823,7 +27825,7 @@ lin pogrom_N = variants {}; lin poignancy_N = variants {}; lin poignant_A = variants {}; lin poinsettia_N = variants {}; -lin point_N = mkN001 "пункт" ; +lin point_N = mkN041 "точка"; lin point_V = variants {}; lin point_V2 = variants {}; lin point_blank_A = variants {}; @@ -28085,7 +28087,7 @@ lin portuguese_A = mkA078 "португалски" ; lin portuguese_N = variants {}; lin pose_N = mkN054 "позьорство" ; lin pose_V = variants {}; -lin pose_V2 = variants {}; +lin pose_V2 = dirV2 (actionV (mkV187 "поставям") (mkV173 "поставя")); lin poser_N = variants {}; lin poseur_N = variants {}; lin poseuse_N = variants {}; @@ -29367,7 +29369,7 @@ lin purplish_A = variants {}; lin purport_N = variants {}; lin purport_V2 = variants {}; lin purport_V2V = variants {}; -lin purpose_N = variants {}; +lin purpose_N = mkN072 "предназначение"; lin purpose_V2 = variants {}; lin purpose_built_A = variants {}; lin purposeful_A = variants {}; @@ -29578,19 +29580,19 @@ lin quentin_PN = variants {}; lin quern_N = variants {}; lin querulous_A = variants {}; lin querulousness_N = variants {}; -lin query_N = variants {}; -lin query_V = variants {}; -lin query_V2 = variants {}; -lin quest_N = mkN071 "търсене" ; -lin quest_V = variants {}; -lin question_N = mkN072 "съмнение" ; -lin question_V2 = variants {}; +lin query_N = mkN071 "запитване"; +lin query_V = actionV (mkV186 "запитвам") (mkV186 "запитам"); +lin query_V2 = dirV2 (actionV (mkV186 "запитвам") (mkV186 "запитам")); +lin quest_N = mkN071 "издирване"; +lin quest_V = actionV (mkV186 "издирвам") (mkV173 "издиря"); +lin question_N = mkN007 "въпрос"; +lin question_V2 = dirV2 (actionV (mkV186 "запитвам") (mkV186 "запитам")); lin question_mark_N = variants {}; lin question_master_N = variants {}; -lin questionable_A = mkA079 "спорен" ; +lin questionable_A = mkA079 "спорен"; lin questioner_N = variants {}; lin questioningly_Adv = variants {}; -lin questionnaire_N = variants {}; +lin questionnaire_N = mkN014 "въпросник"; lin quetzal_N = variants {}; lin queue_N = mkN041 "опашка"; lin queue_V = variants {}; @@ -30571,9 +30573,9 @@ lin regular_N = variants {}; lin regularity_N = variants {}; lin regularization_N = variants {}; lin regularize_V2 = variants {}; -lin regulate_V2 = variants {}; +lin regulate_V2 = dirV2 (stateV (mkV186 "регулирам")); lin regulation_N = mkN071 "регулиране" ; -lin regulator_N = variants {}; +lin regulator_N = mkN007 "регулатор"; lin regum_V2 = variants {}; lin regurgitate_V = variants {}; lin regurgitate_V2 = variants {}; @@ -30686,6 +30688,7 @@ lin relocation_N = variants {}; lin reluctance_N = mkN049 "нерешителност" ; lin reluctant_A = variants {}; lin rely_V = variants {}; +lin rely_on_V2V = variants {}; lin remain_V = variants {}; lin remain_V2 = variants {}; lin remain_VA = variants {}; @@ -30859,8 +30862,8 @@ lin replenish_V2 = variants {}; lin replenishment_N = variants {}; lin replete_A = mkA079 "пълен" ; lin repletion_N = variants {}; -lin replica_N = variants {}; -lin replicate_V2 = variants {}; +lin replica_N = mkN007 "дубликат"; +lin replicate_V2 = dirV2 (actionV (mkV187 "повтарям") (mkV173 "повторя")); lin reply_N = mkN007 "отговор" ; lin reply_V = variants {}; lin reply_V2 = variants {}; @@ -31025,7 +31028,7 @@ lin resinated_A = variants {}; lin resinous_A = variants {}; lin resist_V = variants {}; lin resist_V2 = variants {}; -lin resist_VV = variants {}; +lin resist_VV = gerundVV (medialV (actionV (mkV187 "противопоставям") (mkV173 "противопоставя")) Acc); lin resistance_N = mkN071 "противостоене" ; lin resistant_A = mkA079 "резистентен"; lin resister_N = variants {}; @@ -31960,13 +31963,13 @@ lin ruin_V2 = variants {}; lin ruin_VS = variants {}; lin ruination_N = variants {}; lin ruinous_A = variants {}; -lin rule_N = mkN054 "господство" ; -lin rule_V = variants {}; +lin rule_N = mkN054 "правило"; +lin rule_V = stateV (mkV186 "управлявам"); lin rule_V2 = variants {}; lin rule_VS = variants {}; lin ruler_N = variants {}; -lin ruling_A = mkA078 "владетелски" ; -lin ruling_N = variants {}; +lin ruling_A = mkA076 "управляващ"; +lin ruling_N = mkN072 "управление"; lin rum_N = variants {}; lin rum_runner_N = variants {}; lin rumba_N = variants {}; @@ -33201,7 +33204,7 @@ lin selfishness_N = variants {}; lin selkirk_PN = variants {}; lin sell_N = variants {}; lin sell_V = variants {}; -lin sell_V2 = variants {}; +lin sell_V2 = dirV2 (actionV (mkV186 "продавам") (mkV168 "продам")); lin sell_VA = variants {}; lin sell_VS = variants {}; lin seller_N = variants {}; @@ -33905,8 +33908,8 @@ lin shrimp_V = variants {}; lin shrine_N = variants {}; lin shrine_V2 = variants {}; lin shrink_N = variants {}; -lin shrink_V = variants {}; -lin shrink_V2 = variants {}; +lin shrink_V = medialV (actionV (mkV186 "смалявам") (mkV174 "смаля")) Acc; +lin shrink_V2 = dirV2 (actionV (mkV186 "смалявам") (mkV174 "смаля")); lin shrinkable_A = variants {}; lin shrinkage_N = variants {}; lin shrive_V2 = variants {}; @@ -35120,7 +35123,7 @@ lin sonority_N = variants {}; lin sonorous_A = variants {}; lin sonsy_A = variants {}; lin soochow_PN = variants {}; -lin soon_Adv = variants {}; +lin soon_Adv = {s="скоро"}; lin sooner_Adv = {s="по - скоро"}; lin soonest_Adv = variants {}; lin soot_N = variants {}; @@ -35318,7 +35321,7 @@ lin spareness_N = variants {}; lin sparing_A = variants {}; lin spark_N = variants {}; lin spark_V = variants {}; -lin spark_V2 = variants {}; +lin spark_V2 = dirV2 (actionV (mkV186 "разпръсквам") (mkV186 "разпръскам")); lin spark_plug_N = variants {}; lin sparking_plug_N = variants {}; lin sparkle_N = variants {}; @@ -36101,7 +36104,7 @@ lin steelworks_N = variants {}; lin steely_A = variants {}; lin steelyard_N = variants {}; lin steenbok_N = variants {}; -lin steep_A = variants {}; +lin steep_A = mkA079 "стръмен"; lin steep_V = variants {}; lin steep_V2 = variants {}; lin steepen_V = variants {}; @@ -36852,8 +36855,8 @@ lin sue_V2V = variants {}; lin suede_N = variants {}; lin suet_N = variants {}; lin suety_A = variants {}; -lin suffer_V = variants {}; -lin suffer_V2 = variants {}; +lin suffer_V = stateV (mkV186 "страдам"); +lin suffer_V2 = prepV2 (stateV (mkV186 "страдам")) (mkPrep "от" Acc); lin sufferable_A = variants {}; lin sufferance_N = variants {}; lin sufferer_N = variants {}; @@ -37080,13 +37083,14 @@ lin supplicate_V2 = variants {}; lin supplication_N = variants {}; lin supplier_N = variants {}; lin supply_N = mkN071 "снабдяване" ; -lin supply_V2 = variants {}; -lin support_N = mkN049 "помощ" ; -lin support_V2 = variants {}; +lin supply_V2 = dirV2 (actionV (mkV186 "снабдявам") (mkV174 "снабдя")); +lin support_N = mkN041 "поддръжка"; +lin support_V2 = dirV2 (stateV (mkV186 "поддържам")); +lin support_VV = variants {}; lin supportable_A = variants {}; lin supporter_N = mkN014 "поддръжник" ; -lin suppose_V2 = variants {}; -lin suppose_VV = variants {}; +lin suppose_V2 = dirV2 (actionV (mkV186 "предполагам") (mkV176 "предположа")); +lin suppose_V2V = mkV2V (actionV (mkV186 "предполагам") (mkV176 "предположа")) noPrep noPrep; lin suppose_VS = variants {}; lin supposed_A = mkA076 "предполагаем" ; lin supposition_N = variants {}; @@ -37962,7 +37966,7 @@ lin telex_N = variants {}; lin telfer_N = variants {}; lin telford_PN = variants {}; lin tell_V = variants {}; -lin tell_V2 = variants {}; +lin tell_V2 = dirV2 (actionV (mkV186 "казвам") (mkV156 "кажа")); lin tell_V2V = variants {}; lin tell_V2S = variants {}; lin tell_V2Q = variants {}; @@ -39036,7 +39040,7 @@ lin traction_engine_N = variants {}; lin tractor_N = mkN007 "трактор"; lin tracy_PN = variants {}; lin trad_N = variants {}; -lin trade_N = mkN054 "занаятчийство" ; +lin trade_N = mkN047 "търговия"; lin trade_V = stateV (mkV186 "търгувам"); lin trade_V2 = dirV2 (stateV (mkV186 "търгувам")); lin trade_in_N = variants {}; @@ -40455,7 +40459,7 @@ lin unlawful_A = variants {}; lin unlearn_V2 = variants {}; lin unleash_V2 = variants {}; lin unleavened_A = variants {}; -lin unless_Prep = variants {}; +lin unless_Subj = variants {}; lin unlettered_A = variants {}; lin unlicensed_A = variants {}; lin unlighted_A = variants {}; @@ -42275,7 +42279,8 @@ lin whereas_Prep = variants {}; lin whereat_Adv = variants {}; lin whereby_Adv = variants {}; lin wherefore_Adv = variants {}; -lin wherein_Adv = variants {}; +lin wherein_IAdv = mkIAdv "къде"; +lin wherein_Subj = {s="където"}; lin whereof_Adv = variants {}; lin whereon_Adv = variants {}; lin wheresoever_Adv = variants {}; @@ -42297,7 +42302,7 @@ lin whichsoever_A = variants {}; lin whiff_N = variants {}; lin whig_N = variants {}; lin while_N = variants {}; -lin while_Subj = variants {}; +lin while_Subj = {s="докато"}; lin whilst_Subj = variants {}; lin while_V2 = variants {}; lin whim_N = variants {}; @@ -43024,7 +43029,7 @@ lin yha_N = variants {}; lin yiddish_N = variants {}; lin yield_N = mkN007 "приход"; lin yield_V = variants {}; -lin yield_V2 = variants {}; +lin yield_V2 = dirV2 (actionV (mkV186 "пораждам") (mkV174 "породя")); lin yield_VA = variants {}; lin yielding_A = variants {}; lin ymca_N = variants {}; diff --git a/lib/src/bulgarian/ExtraBul.gf b/lib/src/bulgarian/ExtraBul.gf index b86c33fd1..017af11dd 100644 --- a/lib/src/bulgarian/ExtraBul.gf +++ b/lib/src/bulgarian/ExtraBul.gf @@ -76,7 +76,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul ** BaseVPI x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ; ConsVPI x xs = {s = \\d,t,a=>x.s!a++(linCoordSep comma)!d!t++xs.s!d!t!a} ; - MkVPI vp = {s = daComplex vp ! Perf} ; + MkVPI vp = {s = daComplex Simul Pos vp ! Perf} ; ConjVPI conj vpi = { s = \\a => conj.s++(linCoordSep [])!conj.distr!conj.conj++vpi.s!conj.distr!conj.conj!a; } ; diff --git a/lib/src/bulgarian/IdiomBul.gf b/lib/src/bulgarian/IdiomBul.gf index 09c989fe1..c2105319f 100644 --- a/lib/src/bulgarian/IdiomBul.gf +++ b/lib/src/bulgarian/IdiomBul.gf @@ -61,6 +61,6 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in { vtype = vp.vtype } ; - ImpPl1 vp = {s = "" ++ daComplex vp ! Perf ! {gn = GPl ; p = P1}} ; + ImpPl1 vp = {s = "" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ; } diff --git a/lib/src/bulgarian/MorphoFunsBul.gf b/lib/src/bulgarian/MorphoFunsBul.gf index 5770aa2e5..502519c1c 100644 --- a/lib/src/bulgarian/MorphoFunsBul.gf +++ b/lib/src/bulgarian/MorphoFunsBul.gf @@ -131,10 +131,13 @@ oper mkVS : V -> VS ; mkVS v = v ** {lock_VS = <>} ; - + mkVV : V -> VV ; - mkVV v = v ** {lock_VV = <>} ; - + mkVV v = v ** {typ = VVInf; lock_VV = <>} ; + + gerundVV : V -> VV ; + gerundVV v = v ** {typ = VVGerund; lock_VV = <>} ; + mkVA : V -> VA ; mkVA v = v ** {lock_VA = <>} ; diff --git a/lib/src/bulgarian/ParseEngBul.gf b/lib/src/bulgarian/ParseEngBul.gf index 7a9a8e99b..2e7d11a92 100644 --- a/lib/src/bulgarian/ParseEngBul.gf +++ b/lib/src/bulgarian/ParseEngBul.gf @@ -66,8 +66,10 @@ lin a = np.a } ; - SlashV2V vv p vp = - insertSlashObj2 (daComplex vp ! Perf) (slashV vv vv.c2) ; + SlashV2V vv ant p vp = + insertSlashObj2 (\\agr => ant.s ++ p.s ++ + daComplex ant.a p.p vp ! Perf ! agr) + (slashV vv vv.c2) ; PredVPosv np vp = { s = \\t,a,p,o => @@ -86,9 +88,13 @@ lin } } ; + CompS s = {s = \\_ => "че" ++ s.s} ; + CompVP ant p vp = {s = \\agr => ant.s ++ p.s ++ + daComplex ant.a p.p vp ! Perf ! agr} ; + PassVS vs vp = insertObj (\\a => vs.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) - ++ daComplex vp ! Perf ! a) + ++ daComplex Simul Pos vp ! Perf ! a) (predV verbBe) ; } diff --git a/lib/src/bulgarian/PhraseBul.gf b/lib/src/bulgarian/PhraseBul.gf index 2c32648db..dab49f8c4 100644 --- a/lib/src/bulgarian/PhraseBul.gf +++ b/lib/src/bulgarian/PhraseBul.gf @@ -14,7 +14,7 @@ concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in { UttIP ip = {s = ip.s ! RSubj ! QDir} ; UttIAdv iadv = {s = iadv.s ! QDir} ; UttNP np = {s = np.s ! RSubj} ; - UttVP vp = {s = daComplex vp ! Perf ! agrP3 (GSg Neut)} ; + UttVP vp = {s = daComplex Simul Pos vp ! Perf ! agrP3 (GSg Neut)} ; UttAdv adv = adv ; UttCN n = {s = n.s ! NF Sg Indef} ; UttCard n = {s = n.s ! CFNeut Indef} ; diff --git a/lib/src/bulgarian/ResBul.gf b/lib/src/bulgarian/ResBul.gf index c09264838..a9b51612c 100644 --- a/lib/src/bulgarian/ResBul.gf +++ b/lib/src/bulgarian/ResBul.gf @@ -72,6 +72,8 @@ resource ResBul = ParamX ** open Prelude, Predef in { | VPhrasal Case ; + VVType = VVInf | VVGerund ; + -- The order of sentence is needed already in $VP$. Order = Main | Inv | Quest ; @@ -469,14 +471,30 @@ resource ResBul = ParamX ** open Prelude, Predef in { in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ; - daComplex : VP -> Aspect => Agr => Str = + daComplex : Anteriority -> Polarity -> VP -> Aspect => Agr => Str = + \a,p,vp -> \\asp,agr => + let clitic = case vp.vtype of { + VNormal => {s=[]; agr=agr} ; + VMedial c => {s=reflClitics ! c; agr=agr} ; + VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}} + } ; + pol = case p of {Pos => ""; Neg => ""} + in vp.ad.s ++ "" ++ pol ++ clitic.s ++ + case a of { + Simul => vp.s ! asp ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ; + Anter => auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ + vp.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) + } ++ + vp.compl ! agr ; + + gerund : VP -> Aspect => Agr => Str = \vp -> \\asp,agr => let clitic = case vp.vtype of { VNormal => {s=[]; agr=agr} ; VMedial c => {s=reflClitics ! c; agr=agr} ; VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}} } - in vp.ad.s ++ "" ++ clitic.s ++ vp.s ! asp ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ vp.compl ! agr ; + in vp.ad.s ++ clitic.s ++ vp.s ! asp ! VGerund ++ vp.compl ! agr ; -- For $Numeral$. diff --git a/lib/src/bulgarian/SentenceBul.gf b/lib/src/bulgarian/SentenceBul.gf index 26c33a0af..871c23902 100644 --- a/lib/src/bulgarian/SentenceBul.gf +++ b/lib/src/bulgarian/SentenceBul.gf @@ -49,7 +49,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in { EmbedS s = {s = "," ++ "" ++ s.s} ; EmbedQS qs = {s = qs.s ! QIndir} ; - EmbedVP vp = {s = daComplex vp ! Perf ! {gn=GSg Masc; p=P1}} ; + EmbedVP vp = {s = daComplex Simul Pos vp ! Perf ! {gn=GSg Masc; p=P1}} ; UseCl t p cl = { s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main diff --git a/lib/src/bulgarian/VerbBul.gf b/lib/src/bulgarian/VerbBul.gf index 0e11e9432..98d733685 100644 --- a/lib/src/bulgarian/VerbBul.gf +++ b/lib/src/bulgarian/VerbBul.gf @@ -16,7 +16,11 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in { insertSlashObj2 (\\_ => v.c3.s ++ np.s ! RObj v.c3.c) (slashV v v.c2) ; ComplVV vv vp = - insertObj (daComplex vp ! Perf) (predV vv) ; + insertObj (case vv.typ of { + VVInf => daComplex Simul Pos vp ! Perf; + VVGerund => gerund vp ! Imperf + }) + (predV vv) ; ComplVS v s = insertObj (\\_ => "," ++ "" ++ s.s) (predV v) ; ComplVQ v q = insertObj (\\_ => q.s ! QDir) (predV v) ; @@ -36,13 +40,13 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in { -- test: I saw a boy whom she begged to walk SlashV2V vv vp = - insertSlashObj2 (daComplex vp ! Perf) (slashV vv vv.c2) ; + insertSlashObj2 (daComplex Simul Pos vp ! Perf) (slashV vv vv.c2) ; -- test: I saw a car whom she wanted to buy SlashVV vv slash = { s = vv.s ; ad = {isEmpty=True; s=[]}; - compl1 = daComplex {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype} ! Perf ; + compl1 = daComplex Simul Pos {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype} ! Perf ; compl2 = slash.compl2 ; vtype = vv.vtype ; c2 = slash.c2 @@ -53,7 +57,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in { s = vv.s ; ad = {isEmpty=True; s=[]}; compl1 = \\agr => vv.c2.s ++ np.s ! RObj vv.c2.c ++ - daComplex {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype} ! Perf ! np.a ; + daComplex Simul Pos {s=slash.s; ad=slash.ad; compl=slash.compl1; vtype=slash.vtype} ! Perf ! np.a ; compl2 = slash.compl2 ; vtype = vv.vtype ; c2 = slash.c2 diff --git a/lib/src/english/BackwardEng.gf b/lib/src/english/BackwardEng.gf index 630626f0b..b3be68144 100644 --- a/lib/src/english/BackwardEng.gf +++ b/lib/src/english/BackwardEng.gf @@ -13,7 +13,7 @@ concrete BackwardEng of Backward = CatEng ** open ResEng in { ComplV3 v np np2 = insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ; ComplV2V v np vp = - insertObj (\\a => infVP v.isAux vp a) + insertObj (\\a => infVP v.isAux vp Simul CPos a) (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ; ComplV2S v np s = insertObj (\\_ => conjThat ++ s.s) @@ -33,7 +33,7 @@ concrete BackwardEng of Backward = CatEng ** open ResEng in { SlashVVV2 np vv v2 = mkClause (np.s ! Nom) np.a - (insertObj (\\a => infVP vv.isAux (predV v2) a) (predVV vv)) ** + (insertObj (\\a => infVP vv.isAux (predV v2) Simul CPos a) (predVV vv)) ** {c2 = v2.c2} ; -- from Noun 19/4/2008 diff --git a/lib/src/english/DictEng.gf b/lib/src/english/DictEng.gf index 2cab5d4bd..8203e2949 100644 --- a/lib/src/english/DictEng.gf +++ b/lib/src/english/DictEng.gf @@ -9789,7 +9789,7 @@ lin designate_V2V = mkV2V (mkV "designate") noPrep to_Prep ; lin designate_VS = mkVS (mkV "designate"); lin designation_N = mkN "designation" "designations"; lin designedly_Adv = mkAdv "designedly"; -lin designer_N = mkN "designer" "designers"; +lin designer_N = mkN human (mkN "designer" "designers"); lin designing_A = compoundA (mkA "designing"); lin designing_N = mkN "designing" ; lin desirability_N = mkN "desirability" ; @@ -19875,6 +19875,7 @@ lin keenness_N = mkN "keenness" ; lin keep_N = mkN "keep" "keeps"; lin keep_V = IrregEng.keep_V; lin keep_V2 = mkV2 (IrregEng.keep_V); +lin keep_V2V = mkV2V (IrregEng.keep_V) noPrep to_Prep; lin keep_VA = mkVA (IrregEng.keep_V); lin keep_VS = mkVS (IrregEng.keep_V); lin keep_VV = ingVV (IrregEng.keep_V); @@ -30690,6 +30691,7 @@ lin relocation_N = mkN "relocation" ; lin reluctance_N = mkN "reluctance" ; lin reluctant_A = compoundA (mkA "reluctant"); lin rely_V = mkV "rely" "relies" "relied" "relied" "relying"; +lin rely_on_V2V = mkV2V (mkV "rely" "relies" "relied" "relied" "relying") (mkPrep "on") to_Prep; lin remain_V = mkV "remain"; lin remain_V2 = mkV2 (mkV "remain"); lin remain_VA = mkVA (mkV "remain" "remains" "remained" "remained" "remaining"); @@ -37085,10 +37087,11 @@ lin supply_N = mkN "supply" "supplies"; lin supply_V2 = mkV2 (mkV "supply" "supplies" "supplied" "supplied" "supplying"); lin support_N = mkN "support" "supports"; lin support_V2 = mkV2 (mkV "support" "supports" "supported" "supported" "supporting"); +lin support_VV = ingVV (mkV "support" "supports" "supported" "supported" "supporting"); lin supportable_A = compoundA (mkA "supportable"); lin supporter_N = mkN "supporter" "supporters"; lin suppose_V2 = mkV2 (mkV "suppose" "supposes" "supposed" "supposed" "supposing"); -lin suppose_VV = mkVV (mkV "suppose" "supposes" "supposed" "supposed" "supposing"); +lin suppose_V2V = mkV2V (mkV "suppose" "supposes" "supposed" "supposed" "supposing") noPrep to_Prep; lin suppose_VS = mkVS (mkV "suppose" "supposes" "supposed" "supposed" "supposing"); lin supposed_A = compoundA (mkA "supposed"); lin supposition_N = mkN "supposition" "suppositions"; @@ -40461,7 +40464,7 @@ lin unlawful_A = compoundA (mkA "unlawful"); lin unlearn_V2 = mkV2 (mkV "unlearn" "unlearns" "unlearned" "unlearned" "unlearning"); lin unleash_V2 = mkV2 (mkV "unleash" "unleashes" "unleashed" "unleashed" "unleashing"); lin unleavened_A = compoundA (mkA "unleavened"); -lin unless_Prep = mkPrep "unless"; +lin unless_Subj = mkSubj "unless"; lin unlettered_A = compoundA (mkA "unlettered"); lin unlicensed_A = compoundA (mkA "unlicensed"); lin unlighted_A = compoundA (mkA "unlighted"); @@ -42281,7 +42284,8 @@ lin whereas_Prep = mkPrep "whereas"; lin whereat_Adv = mkAdv "whereat"; lin whereby_Adv = mkAdv "whereby"; lin wherefore_Adv = mkAdv "wherefore"; -lin wherein_Adv = mkAdv "wherein"; +lin wherein_IAdv = {s="wherein"}; +lin wherein_Subj = mkSubj "wherein"; lin whereof_Adv = mkAdv "whereof"; lin whereon_Adv = mkAdv "whereon"; lin wheresoever_Adv = mkAdv "wheresoever"; diff --git a/lib/src/english/DictEngAbs.gf b/lib/src/english/DictEngAbs.gf index 408151bee..4825389ca 100644 --- a/lib/src/english/DictEngAbs.gf +++ b/lib/src/english/DictEngAbs.gf @@ -19851,6 +19851,7 @@ fun keenness_N : N; fun keep_N : N; fun keep_V : V; fun keep_V2 : V2; +fun keep_V2V : V2V; fun keep_VA : VA; fun keep_VS : VS; fun keep_VV : VV; @@ -30638,6 +30639,7 @@ fun relocation_N : N; fun reluctance_N : N; fun reluctant_A : A; fun rely_V : V; +fun rely_on_V2V : V2V; fun remain_V : V; fun remain_V2 : V2; fun remain_VA : VA; @@ -37020,10 +37022,11 @@ fun supply_N : N; fun supply_V2 : V2; fun support_N : N; fun support_V2 : V2; +fun support_VV : VV; fun supportable_A : A; fun supporter_N : N; fun suppose_V2 : V2; -fun suppose_VV : VV; +fun suppose_V2V : V2V; fun suppose_VS : VS; fun supposed_A : A; fun supposition_N : N; @@ -40391,7 +40394,7 @@ fun unlawful_A : A; fun unlearn_V2 : V2; fun unleash_V2 : V2; fun unleavened_A : A; -fun unless_Prep : Prep ; +fun unless_Subj : Subj ; fun unlettered_A : A; fun unlicensed_A : A; fun unlighted_A : A; @@ -42211,7 +42214,8 @@ fun whereas_Prep : Prep ; fun whereat_Adv : Adv; fun whereby_Adv : Adv; fun wherefore_Adv : Adv; -fun wherein_Adv : Adv; +fun wherein_IAdv : IAdv; +fun wherein_Subj : Subj; fun whereof_Adv : Adv; fun whereon_Adv : Adv; fun wheresoever_Adv : Adv; diff --git a/lib/src/english/ExtraEng.gf b/lib/src/english/ExtraEng.gf index 7fd5af600..fc5a54857 100644 --- a/lib/src/english/ExtraEng.gf +++ b/lib/src/english/ExtraEng.gf @@ -95,9 +95,9 @@ concrete ExtraEng of ExtraEngAbs = CatEng ** isPre = False ---- depends on whether there are complements } ; - EmbedPresPart vp = {s = infVP VVPresPart vp (agrP3 Sg)} ; --- agr + EmbedPresPart vp = {s = infVP VVPresPart vp Simul CPos (agrP3 Sg)} ; --- agr - UttVPShort vp = {s = infVP VVAux vp (agrP3 Sg)} ; + UttVPShort vp = {s = infVP VVAux vp Simul CPos (agrP3 Sg)} ; do_VV = { s = table { diff --git a/lib/src/english/IdiomEng.gf b/lib/src/english/IdiomEng.gf index 4c5698384..6284ccd41 100644 --- a/lib/src/english/IdiomEng.gf +++ b/lib/src/english/IdiomEng.gf @@ -24,9 +24,9 @@ concrete IdiomEng of Idiom = CatEng ** open Prelude, ResEng in { ProgrVP vp = insertObj (\\a => vp.ad ++ vp.prp ++ vp.s2 ! a) (predAux auxBe) ; - ImpPl1 vp = {s = "let's" ++ infVP VVAux vp (AgP1 Pl)} ; + ImpPl1 vp = {s = "let's" ++ infVP VVAux vp Simul CPos (AgP1 Pl)} ; - ImpP3 np vp = {s = "let" ++ np.s ! NPAcc ++ infVP VVAux vp np.a} ; + ImpP3 np vp = {s = "let" ++ np.s ! NPAcc ++ infVP VVAux vp Simul CPos np.a} ; } diff --git a/lib/src/english/ParseEng.gf b/lib/src/english/ParseEng.gf index 0dd1ddbd3..4fea6e583 100644 --- a/lib/src/english/ParseEng.gf +++ b/lib/src/english/ParseEng.gf @@ -66,14 +66,13 @@ lin UseQuantPN q pn = {s = \\c => q.s ! False ! Sg ++ pn.s ! npcase2case c ; a = agrgP3 Sg pn.g} ; - SlashV2V v p vp = insertObjc (\\a => p.s ++ case p.p of {CPos => ""; _ => "not"} ++ - v.c3 ++ - infVP v.typ vp a) - (predVc v) ; + SlashV2V v ant p vp = insertObjc (\\a => v.c3 ++ ant.s ++ p.s ++ + infVP v.typ vp ant.a p.p a) + (predVc v) ; - SlashVPIV2V v p vpi = insertObjc (\\a => p.s ++ case p.p of {CPos => ""; _ => "not"} ++ - v.c3 ++ - vpi.s ! VVAux ! a) + SlashVPIV2V v p vpi = insertObjc (\\a => p.s ++ + v.c3 ++ + vpi.s ! VVAux ! a) (predVc v) ; PredVPosv np vp = { @@ -83,7 +82,7 @@ lin compl = vp.s2 ! np.a in case o of { - ODir => compl ++ "," ++ np.s ! npNom ++ verb.aux ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf ; + ODir => compl ++ "," ++ np.s ! npNom ++ verb.aux ++ vp.ad ++ verb.fin ++ verb.adv ++ verb.inf ; OQuest => verb.aux ++ compl ++ "," ++ np.s ! npNom ++ verb.adv ++ vp.ad ++ verb.fin ++ verb.inf } } ; @@ -110,11 +109,12 @@ lin } ; CompS s = {s = \\_ => "that" ++ s.s} ; - CompVP vp = {s = \\a => infVP VVInf vp a} ; + CompVP ant p vp = {s = \\a => ant.s ++ p.s ++ + infVP VVInf vp ant.a p.p a} ; PassVS vs vp = let - vps = insertObj (\\a => infVP VVInf vp a) (predV vs) ; + vps = insertObj (\\a => infVP VVInf vp Simul CPos a) (predV vs) ; be = predAux auxBe ; ppt = vps.ptp in { @@ -134,6 +134,20 @@ lin a = np.a } ; +{- GerundRS rp vp = { + s = \\t,ant,b,ag => + let + agr = case rp.a of { + RNoAg => ag ; + RAg a => a + } ; + cl = mkClause (rp.s ! RC (fromAgr agr).g npNom) agr vp + in + cl.s ! t ! ant ! b ! ODir ; + c = npNom + } ; +-} + lin PPos = {s = [] ; p = CPos} ; PNeg = {s = [] ; p = CNeg True} ; -- contracted: don't diff --git a/lib/src/english/ParseEngAbs.gf b/lib/src/english/ParseEngAbs.gf index db1b9610d..5ad44fd31 100644 --- a/lib/src/english/ParseEngAbs.gf +++ b/lib/src/english/ParseEngAbs.gf @@ -41,18 +41,23 @@ fun CompoundCN : Num -> N -> CN -> CN ; UseQuantPN : Quant -> PN -> NP; - SlashV2V : V2V -> Pol -> VP -> VPSlash ; + SlashV2V : V2V -> Ant -> Pol -> VP -> VPSlash ; SlashVPIV2V : V2V -> Pol -> VPI -> VPSlash ; + SlashSlashV2V : V2V -> Ant -> Pol -> VPSlash -> VPSlash ; + PredVPosv,PredVPovs : NP -> VP -> Cl ; that_RP, no_RP : RP ; CompS : S -> Comp ; - CompVP : VP -> Comp ; + CompVP : Ant -> Pol -> VP -> Comp ; PassVS : VS -> VP -> VP ; PPartNP : NP -> VPSlash -> NP ; UncNeg : Pol ; + +-- GerundRS : Anter -> Pol -> VP -> RS ; + } diff --git a/lib/src/english/PhraseEng.gf b/lib/src/english/PhraseEng.gf index 496f8ee03..26b2e030e 100644 --- a/lib/src/english/PhraseEng.gf +++ b/lib/src/english/PhraseEng.gf @@ -12,7 +12,7 @@ concrete PhraseEng of Phrase = CatEng ** open Prelude, ResEng in { UttIP ip = {s = ip.s ! npNom} ; --- Acc also UttIAdv iadv = iadv ; UttNP np = {s = np.s ! npNom} ; - UttVP vp = {s = infVP VVInf vp (agrP3 Sg)} ; + UttVP vp = {s = infVP VVInf vp Simul CPos (agrP3 Sg)} ; UttAdv adv = adv ; UttCN n = {s = n.s ! Sg ! Nom} ; UttCard n = {s = n.s ! Nom} ; diff --git a/lib/src/english/ResEng.gf b/lib/src/english/ResEng.gf index aa55a8feb..ff6ec2ceb 100644 --- a/lib/src/english/ResEng.gf +++ b/lib/src/english/ResEng.gf @@ -376,13 +376,20 @@ resource ResEng = ParamX ** open Prelude in { presVerb : {s : VForm => Str} -> Agr -> Str = \verb -> agrVerb (verb.s ! VPres) (verb.s ! VInf) ; - infVP : VVType -> VP -> Agr -> Str = \typ,vp,a -> - vp.ad ++ - case typ of { - VVAux => vp.inf ; - VVInf => "to" ++ vp.inf ; - _ => vp.prp - } ++ + infVP : VVType -> VP -> Anteriority -> CPolarity -> Agr -> Str = \typ,vp,ant,cb,a -> + case cb of {CPos => ""; _ => "not"} ++ + case ant of { + Simul => case typ of { + VVAux => vp.ad ++ vp.inf ; + VVInf => "to" ++ vp.ad ++ vp.inf ; + _ => vp.ad ++ vp.prp + }; + Anter => case typ of { + VVAux => "have" ++ vp.ad ++ vp.ptp ; + VVInf => "to" ++ "have" ++ vp.ad ++ vp.ptp ; + _ => "having" ++ vp.ad ++ vp.ptp + } + } ++ vp.s2 ! a ; agrVerb : Str -> Str -> Agr -> Str = \has,have,agr -> diff --git a/lib/src/english/SentenceEng.gf b/lib/src/english/SentenceEng.gf index 8a13a2ed7..7270b9780 100644 --- a/lib/src/english/SentenceEng.gf +++ b/lib/src/english/SentenceEng.gf @@ -12,7 +12,7 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in { s = \\pol,n => let agr = AgP2 (numImp n) ; - verb = infVP VVAux vp agr ; + verb = infVP VVAux vp Simul CPos agr ; dont = case pol of { CNeg True => "don't" ; CNeg False => "do" ++ "not" ; @@ -39,7 +39,7 @@ concrete SentenceEng of Sentence = CatEng ** open Prelude, ResEng in { EmbedS s = {s = conjThat ++ s.s} ; EmbedQS qs = {s = qs.s ! QIndir} ; - EmbedVP vp = {s = infVP VVInf vp (agrP3 Sg)} ; --- agr + EmbedVP vp = {s = infVP VVInf vp Simul CPos (agrP3 Sg)} ; --- agr UseCl t p cl = { s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! ODir diff --git a/lib/src/english/VerbEng.gf b/lib/src/english/VerbEng.gf index ac985bdb2..7d9addfe8 100644 --- a/lib/src/english/VerbEng.gf +++ b/lib/src/english/VerbEng.gf @@ -11,12 +11,12 @@ concrete VerbEng of Verb = CatEng ** open ResEng in { Slash3V3 v np = insertObjc (\\_ => v.c3 ++ np.s ! NPAcc) (predVc v) ; ---- - ComplVV v vp = insertObj (\\a => infVP v.typ vp a) (predVV v) ; + ComplVV v vp = insertObj (\\a => infVP v.typ vp Simul CPos a) (predVV v) ; ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ; ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; ComplVA v ap = insertObj (ap.s) (predV v) ; - SlashV2V v vp = insertObjc (\\a => v.c3 ++ infVP v.typ vp a) (predVc v) ; + SlashV2V v vp = insertObjc (\\a => v.c3 ++ infVP v.typ vp Simul CPos a) (predVc v) ; SlashV2S v s = insertObjc (\\_ => conjThat ++ s.s) (predVc v) ; SlashV2Q v q = insertObjc (\\_ => q.s ! QIndir) (predVc v) ; SlashV2A v ap = insertObjc (\\a => ap.s ! a) (predVc v) ; ---- @@ -24,11 +24,11 @@ concrete VerbEng of Verb = CatEng ** open ResEng in { ComplSlash vp np = insertObjPre (\\_ => vp.c2 ++ np.s ! NPAcc) vp ; SlashVV vv vp = - insertObj (\\a => infVP vv.typ vp a) (predVV vv) ** + insertObj (\\a => infVP vv.typ vp Simul CPos a) (predVV vv) ** {c2 = vp.c2} ; SlashV2VNP vv np vp = insertObjPre (\\_ => vv.c2 ++ np.s ! NPAcc) - (insertObjc (\\a => vv.c3 ++ infVP vv.typ vp a) (predVc vv)) ** + (insertObjc (\\a => vv.c3 ++ infVP vv.typ vp Simul CPos a) (predVc vv)) ** {c2 = vp.c2} ; UseComp comp = insertObj comp.s (predAux auxBe) ;