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} ; }