diff --git a/lib/src/catalan/DiffCat.gf b/lib/src/catalan/DiffCat.gf index 9c07d93ca..5106a42d5 100644 --- a/lib/src/catalan/DiffCat.gf +++ b/lib/src/catalan/DiffCat.gf @@ -178,4 +178,6 @@ oper verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere} ; + subjPron = \_ -> [] ; + } diff --git a/lib/src/french/DiffFre.gf b/lib/src/french/DiffFre.gf index bcd4ab5f7..4629f1d89 100644 --- a/lib/src/french/DiffFre.gf +++ b/lib/src/french/DiffFre.gf @@ -225,4 +225,15 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in { datClit = "y" ; genClit = "en" ; + subjPron = \a -> case a of { + {n = Sg ; p = P1} => "je" ; + {n = Sg ; p = P2} => "tu" ; + {n = Pl ; p = P1} => "nous" ; + {n = Pl ; p = P2} => "vous" ; + {n = Sg ; p = P3 ; g = Masc} => "il" ; + {n = Sg ; p = P3 ; g = Fem} => "elle" ; + {n = Pl ; p = P3 ; g = Masc} => "ils" ; + {n = Pl ; p = P3 ; g = Fem} => "elles" + } ; + } diff --git a/lib/src/italian/DiffIta.gf b/lib/src/italian/DiffIta.gf index 6fa6f5502..448b6bb21 100644 --- a/lib/src/italian/DiffIta.gf +++ b/lib/src/italian/DiffIta.gf @@ -203,5 +203,6 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud datClit = "ci" ; genClit = "ne" ; + subjPron = \_ -> [] ; } diff --git a/lib/src/italian/GrammarIta.gf b/lib/src/italian/GrammarIta.gf index b4292dd27..7204cbcd3 100644 --- a/lib/src/italian/GrammarIta.gf +++ b/lib/src/italian/GrammarIta.gf @@ -11,7 +11,7 @@ concrete GrammarIta of Grammar = RelativeIta, ConjunctionIta, PhraseIta, - TextX - [SC,Temp,Tense,Pol,PPos,PNeg], + TextX - [SC,Temp,Tense,Pol,PPos,PNeg,TPres,TPast,TFut,TCond], IdiomIta, StructuralIta, TenseIta diff --git a/lib/src/romance/DiffRomance.gf b/lib/src/romance/DiffRomance.gf index 4b897258e..a93aed7d7 100644 --- a/lib/src/romance/DiffRomance.gf +++ b/lib/src/romance/DiffRomance.gf @@ -116,6 +116,10 @@ oper ext : RPolarity => Str ; -- que je dors / que je dorme } ; +-- The pronoun to be repeated in $VPS$ coordination, and also in Fre inverted questions. +-- Empty in other languages than Fre (as a kind of prodrop). + + subjPron : Agr -> Str ; --2 Workarounds, to be eliminated diff --git a/lib/src/romance/ExtraRomance.gf b/lib/src/romance/ExtraRomance.gf index 09f2933c2..6378da246 100644 --- a/lib/src/romance/ExtraRomance.gf +++ b/lib/src/romance/ExtraRomance.gf @@ -37,4 +37,33 @@ incomplete concrete ExtraRomance of ExtraRomanceAbs = CatRomance ** PrepCN prep cn = {s = prep.s ++ prepCase prep.c ++ cn.s ! Sg} ; + lincat + VPS = {s : Mood => Agr => Bool => Str} ; + [VPS] = {s1,s2 : Mood => Agr => Bool => Str} ; + + lin + BaseVPS x y = { + s1 = \\m,a,b => x.s ! m ! a ! b ; + s2 = \\m,a,b => subjPron a ++ y.s ! m ! a ! b + } ; + + ConsVPS x y = { + s1 = \\m,a,b => x.s ! m ! a ! b ; + s2 = \\m,a,b => subjPron a ++ y.s1 ! m ! a ! b ++ y.s2 ! m ! a ! b + } ; + + PredVPS np vpi = { + s = \\m => (np.s ! Nom).comp ++ vpi.s ! m ! np.a ! np.isNeg + } ; + + MkVPS tm p vp = { + s = \\m,agr,isNeg => + tm.s ++ p.s ++ + (mkClausePol (orB isNeg vp.isNeg) [] False False agr vp).s + ! DDir ! tm.t ! tm.a ! p.p ! m + } ; + + ConjVPS = conjunctDistrTable3 Mood Agr Bool ; + + } diff --git a/lib/src/romance/ExtraRomanceAbs.gf b/lib/src/romance/ExtraRomanceAbs.gf index 242ce20a4..bc031c80e 100644 --- a/lib/src/romance/ExtraRomanceAbs.gf +++ b/lib/src/romance/ExtraRomanceAbs.gf @@ -1,5 +1,7 @@ abstract ExtraRomanceAbs = Cat, Extra[ VPI,ListVPI,BaseVPI,ConsVPI,MkVPI,ComplVPIVV,ConjVPI, + VPS,ListVPS,BaseVPS,ConsVPS,ConjVPS,MkVPS,PredVPS, + Temp,Pol,S,NP, VV,VP,Conj,Pron,ProDrop,CompIQuant,IQuant,IComp,PrepCN,CN,Prep,Adv] ** { fun diff --git a/lib/src/spanish/DiffSpa.gf b/lib/src/spanish/DiffSpa.gf index 90bf3e89b..810bb5269 100644 --- a/lib/src/spanish/DiffSpa.gf +++ b/lib/src/spanish/DiffSpa.gf @@ -180,4 +180,5 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud verbBeschH : Verbum -> Verb = \v -> verbBesch v ** {vtyp = VHabere} ; + subjPron = \_ -> [] ; }