diff --git a/lib/resource/french/DiffFre.gf b/lib/resource/french/DiffFre.gf index 88996fdfa..37026a754 100644 --- a/lib/resource/french/DiffFre.gf +++ b/lib/resource/french/DiffFre.gf @@ -87,6 +87,7 @@ instance DiffFre of DiffRomance = open CommonRomance, PhonoFre, Prelude in { _ => } ; + infForm _ _ _ _ = True ; -- Positive polarity is used in the imperative: stressed for 1st and -- 2nd persons. diff --git a/lib/resource/italian/DiffIta.gf b/lib/resource/italian/DiffIta.gf index e43e0e97d..7eef2109e 100644 --- a/lib/resource/italian/DiffIta.gf +++ b/lib/resource/italian/DiffIta.gf @@ -105,6 +105,8 @@ instance DiffIta of DiffRomance = open CommonRomance, PhonoIta, BeschIta, Prelud in ; + infForm n p x y = (pronArg n p x y).p3 ; + mkImperative b p vp = { s = \\pol,aag => let diff --git a/lib/resource/romance/DiffRomance.gf b/lib/resource/romance/DiffRomance.gf index 4ff5f3c96..70dd40943 100644 --- a/lib/resource/romance/DiffRomance.gf +++ b/lib/resource/romance/DiffRomance.gf @@ -103,6 +103,13 @@ param oper Verb = {s : VF => Str ; vtyp : VType} ; +--2 Workarounds, to be eliminated + +-- This should be provided by $pronArg$ above, but causes trouble in compilation. +-- (AR 16/8/2008) + + oper infForm : Number -> Person -> CAgr -> CAgr -> Bool ; + } diff --git a/lib/resource/romance/ResRomance.gf b/lib/resource/romance/ResRomance.gf index 6e91fe665..198db0c2b 100644 --- a/lib/resource/romance/ResRomance.gf +++ b/lib/resource/romance/ResRomance.gf @@ -278,7 +278,8 @@ oper let vp = useVP vpr ; clpr = pronArg agr.n agr.p vp.clAcc vp.clDat ; - inf = (vp.s ! VPInfinit Simul clpr.p3).inf ! (aagr agr.g agr.n) ; + iform = infForm agr.n agr.p vp.clAcc vp.clDat ; + inf = (vp.s ! VPInfinit Simul iform).inf ! (aagr agr.g agr.n) ; neg = vp.neg ! Pos ; --- Neg not in API obj = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! Pos ---- pol in diff --git a/lib/resource/spanish/DiffSpa.gf b/lib/resource/spanish/DiffSpa.gf index 12abe52f3..668aa79c0 100644 --- a/lib/resource/spanish/DiffSpa.gf +++ b/lib/resource/spanish/DiffSpa.gf @@ -70,7 +70,15 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud CPron ag an ap => ; _ => <[],P2,False> } ; - defaultPronArg = + peither = case acc of { + CRefl | CPron _ _ _ => True ; + _ => case dat of { + CPron _ _ _ => True ; + _ => False + } + } ; + defaultPronArg = +---- defaultPronArg = in ---- case < : Person * Person> of { ---- => <"se" ++ paccp.p1, [], True> ; @@ -80,6 +88,8 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud ---- a constant produces an error in V3 predication with two pronouns defaultPronArg ; + infForm _ _ _ _ = True ; + mkImperative b p vp = { s = \\pol,aag => let