From d31f25f370826e9f53c59ff9c3a5da25e457f6e1 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 12 Apr 2019 09:04:44 +0200 Subject: [PATCH 1/5] (Spa) Fix an error in relative pronoun: cuyo is genitive, not dative --- src/spanish/DiffSpa.gf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/spanish/DiffSpa.gf b/src/spanish/DiffSpa.gf index af4632b23..655716a48 100644 --- a/src/spanish/DiffSpa.gf +++ b/src/spanish/DiffSpa.gf @@ -158,8 +158,8 @@ instance DiffSpa of DiffRomance - [iAdvQuestionInv,otherInv,partAgr,stare_V,vpAg relPron : Bool => AAgr => Case => Str = \\b,a,c => case c of { Nom | Acc => "que" ; - CPrep P_a => "cuyo" ; - _ => prepCase c ++ "cuyo" + CPrep P_de => "cuyo" ; + _ => prepCase c ++ "que" } ; pronSuch : AAgr => Str = aagrForms "tál" "tál" "tales" "tales" ; From a9fd3eec9255c1b37c22067714a2cba9fa0f03a5 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 12 Apr 2019 09:04:59 +0200 Subject: [PATCH 2/5] (Romance) Add DetNPFem --- src/romance/ExtendRomanceFunctor.gf | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/romance/ExtendRomanceFunctor.gf b/src/romance/ExtendRomanceFunctor.gf index ef2b2f6eb..deb5d0091 100644 --- a/src/romance/ExtendRomanceFunctor.gf +++ b/src/romance/ExtendRomanceFunctor.gf @@ -223,7 +223,15 @@ incomplete concrete ExtendRomanceFunctor of Extend = lin DetNPMasc = DetNP ; - DetNPFem = DetNP ; + DetNPFem det = + let + g = Fem ; + n = det.n + in heavyNPpol det.isNeg { + s = det.sp ! g ; + a = agrP3 g n ; + hasClit = False + } ; lin iFem_Pron = i_Pron ; -- DEFAULT I (masc) From d25bbe71755b50686de1939b1f5bb49be232f8e3 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Fri, 12 Apr 2019 15:00:11 +0200 Subject: [PATCH 3/5] (Extend,Eng,Spa,Swe) New function: "what we did (fas fun)" --- src/abstract/Extend.gf | 9 ++++++++- src/common/ExtendFunctor.gf | 1 + src/english/ExtendEng.gf | 4 +++- src/spanish/ExtendSpa.gf | 2 ++ src/swedish/ExtendSwe.gf | 4 +++- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/abstract/Extend.gf b/src/abstract/Extend.gf index b48daa442..ab198595f 100644 --- a/src/abstract/Extend.gf +++ b/src/abstract/Extend.gf @@ -138,13 +138,20 @@ abstract Extend = Cat ** { -- proper structure of "it is AP to VP" PredAPVP : AP -> VP -> Cl ; -- it is good to walk - PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk? -- to use an AP as CN or NP without CN AdjAsCN : AP -> CN ; -- a green one ; en grön (Swe) AdjAsNP : AP -> NP ; -- green (is good) +-- infinitive complement for IAdv + + PredIAdvVP : IAdv -> VP -> QCl ; -- how to walk? + +-- alternative SC, with "what" + + WhatSSC : S -> SC ; -- what we did (was fun) + -- reflexive noun phrases: a generalization of Verb.ReflVP, which covers just reflexive pronouns -- This is necessary in languages like Swedish, which have special reflexive possessives. -- However, it is also needed in application grammars that want to treat "brush one's teeth" as a one-place predicate. diff --git a/src/common/ExtendFunctor.gf b/src/common/ExtendFunctor.gf index 8c7867d7e..b338707ab 100644 --- a/src/common/ExtendFunctor.gf +++ b/src/common/ExtendFunctor.gf @@ -64,6 +64,7 @@ lin FrontComplDirectVQ = variants {} ; -- NP -> VQ -> Utt -> Cl ; -- "where", she asked PredAPVP ap vp = ImpersCl (UseComp (CompAP (SentAP ap (EmbedVP vp)))) ; -- DEFAULT it is (good to walk) PredIAdvVP iadv vp = QuestIAdv iadv (GenericCl vp) ; -- DEFAULT how does one walk + WhatSSC = EmbedS ; -- DEFAULT that we did (was fun) AdjAsCN = variants {} ; -- AP -> CN ; -- a green one ; en grön (Swe) AdjAsNP = variants {} ; -- AP -> NP ; -- green (is good) ReflRNP = variants {} ; -- VPSlash -> RNP -> VP ; -- love my family and myself diff --git a/src/english/ExtendEng.gf b/src/english/ExtendEng.gf index 935b737bb..7164bbc67 100644 --- a/src/english/ExtendEng.gf +++ b/src/english/ExtendEng.gf @@ -15,7 +15,7 @@ concrete ExtendEng of Extend = FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP, GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP, PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, - PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, + WhatSSC, PredIAdvVP, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2 ] with @@ -193,6 +193,8 @@ concrete ExtendEng of Extend = PredIAdvVP iadv vp = {s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)} ; + WhatSSC s = {s = \\_ => "what" ++ s.s} ; + NominalizeVPSlashNP vpslash np = let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ; a = AgP3Sg Neutr diff --git a/src/spanish/ExtendSpa.gf b/src/spanish/ExtendSpa.gf index 933446faa..05cd6fe18 100644 --- a/src/spanish/ExtendSpa.gf +++ b/src/spanish/ExtendSpa.gf @@ -61,6 +61,8 @@ concrete ExtendSpa of Extend = CatSpa ** ExtendRomanceFunctor - s = "qué tan" ++ adv.s } ; + WhatSSC s = {s = \\_ => "lo que" ++ s.s ! Indic} ; --- mood + ExistsNP np = mkClause [] True False np.a (insertComplement (\\_ => (np.s ! Nom).ton) diff --git a/src/swedish/ExtendSwe.gf b/src/swedish/ExtendSwe.gf index 106b2235d..5af405a5e 100644 --- a/src/swedish/ExtendSwe.gf +++ b/src/swedish/ExtendSwe.gf @@ -8,7 +8,7 @@ concrete ExtendSwe of Extend = CatSwe ** PassVPSlash, PassAgentVPSlash, UttVPShort, ByVP, InOrderToVP, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, - ICompAP,ProDrop, + ICompAP,ProDrop,WhatSSC, AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP, RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP, Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, @@ -230,4 +230,6 @@ concrete ExtendSwe of Extend = CatSwe ** } ; AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a ; isPron = False} (UseComp (CompNP np)) ; + + WhatSSC s = {s = "det" ++ s.s ! Main} ; } From 4277ac33addb9d3de6295a352800c73a654f1e0e Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 17 Apr 2019 14:37:06 +0200 Subject: [PATCH 4/5] (Pes) Fix bug in mkPrep --- src/persian/ParadigmsPes.gf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/persian/ParadigmsPes.gf b/src/persian/ParadigmsPes.gf index e2d927a3b..b29dc62df 100644 --- a/src/persian/ParadigmsPes.gf +++ b/src/persian/ParadigmsPes.gf @@ -185,7 +185,7 @@ oper mkPrep = overload { mkPrep : Str -> Prep -- Takes a string, returns a preposition. - = \str -> lin Prep {s = str ; ra = [] ; mod = Bare} ; + = \str -> lin Prep (prepOrRa str) ; mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition. = \str,m -> lin Prep {s = str ; ra = [] ; mod=m} } ; From 92a49f9c479dabdc9e9830a0503e8a8acc4ca24a Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Wed, 17 Apr 2019 14:37:43 +0200 Subject: [PATCH 5/5] (Pes) Use perfect for subjunctive in haveVerb --- src/persian/MorphoPes.gf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/persian/MorphoPes.gf b/src/persian/MorphoPes.gf index 24b4dd896..d5378f19a 100644 --- a/src/persian/MorphoPes.gf +++ b/src/persian/MorphoPes.gf @@ -315,7 +315,8 @@ oper haveVerb : Verb = haveRegV ** {s = table { ImpPrefix _ => [] ; - VAor Neg agr => imperfectSuffix agr (addN "دار") ; + VAor Neg agr => imperfectSuffix agr (addN "دار") ; + VSubj pol agr => haveRegV.s ! VPerf pol agr ; vf => haveRegV.s ! vf } } where { haveRegV = mkVerb "داشتن" "دار" } ;