diff --git a/lib/resource-1.4/abstract/Structural.gf b/lib/resource-1.4/abstract/Structural.gf index b1e772dd2..d616ba9d5 100644 --- a/lib/resource-1.4/abstract/Structural.gf +++ b/lib/resource-1.4/abstract/Structural.gf @@ -29,8 +29,8 @@ abstract Structural = Cat ** { but_PConj : PConj ; by8agent_Prep : Prep ; -- by (agent) by8means_Prep : Prep ; -- by (means of) - can8know_VV : VV ; - can_VV : VV ; + can8know_VV : VV ; -- can (capacity) + can_VV : VV ; -- can (possibility) during_Prep : Prep ; either7or_DConj : Conj ; -- either...or ---b either7or_DConj : DConj ; diff --git a/lib/resource-1.4/danish/DiffDan.gf b/lib/resource-1.4/danish/DiffDan.gf index cd7185def..2309efd3a 100644 --- a/lib/resource-1.4/danish/DiffDan.gf +++ b/lib/resource-1.4/danish/DiffDan.gf @@ -68,9 +68,9 @@ instance DiffDan of DiffScand = open CommonScand, Prelude in { } ; relPron : GenNum => RCase => Str = \\gn,c => case c of { - RNom => "som" ; + RNom | RPrep False => "som" ; RGen => "hvis" ; - RPrep => gennumForms "hvilken" "hvilket" "hvilke" ! gn + RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gn } ; pronSuch = gennumForms "sådan" "sådant" "sådanne" ; diff --git a/lib/resource-1.4/danish/IdiomDan.gf b/lib/resource-1.4/danish/IdiomDan.gf index e0f79439d..91c46af12 100644 --- a/lib/resource-1.4/danish/IdiomDan.gf +++ b/lib/resource-1.4/danish/IdiomDan.gf @@ -8,13 +8,10 @@ concrete IdiomDan of Idiom = CatDan ** GenericCl vp = mkClause "man" (agrP3 MorphoDan.utrum Sg) vp ; CleftNP np rs = mkClause "det" (agrP3 MorphoDan.neutrum Sg) - (insertObj (\\_ => rs.s ! np.a) - (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + (insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a) (predV verbBe)) ; CleftAdv ad s = mkClause "det" (agrP3 MorphoDan.neutrum Sg) - (insertObj (\\_ => "som" ++ s.s ! Sub) - (insertObj (\\_ => ad.s) (predV verbBe))) ; - + (insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ; ExistNP np = mkClause "det" (agrP3 MorphoDan.neutrum Sg) (insertObj diff --git a/lib/resource-1.4/danish/ParadigmsDan.gf b/lib/resource-1.4/danish/ParadigmsDan.gf index e6b63c4df..ce488ddee 100644 --- a/lib/resource-1.4/danish/ParadigmsDan.gf +++ b/lib/resource-1.4/danish/ParadigmsDan.gf @@ -327,9 +327,9 @@ oper mk3N x y z = let u = ifTok Str x z "ene" "ne" in mk4N x y z (z + u) ; - mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; + mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = mkComplement p.s} ; regN2 n g = mkN2 (regGenN n g) (mkPreposition "av") ; - mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = mkComplement p.s ; c3 = mkComplement q.s} ; mk2PN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ; regPN n = mk2PN n utrum ; @@ -347,7 +347,7 @@ oper mk2A a b = mk3A a b (a + "e") ; regA a = (regADeg a) ** {lock_A = <>} ; - mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + mkA2 a p = a ** {c2 = mkComplement p.s ; lock_A2 = <>} ; mkADeg a b c d e = mkAdject a b c d e ** {isComp = False ; lock_A = <>} ; @@ -419,18 +419,18 @@ oper s = v.s ; part = v.part ; vtype = VRefl ; isVaere = False ; lock_V = <> } ; - mk2V2 v p = v ** {c2 = p.s ; lock_V2 = <>} ; + mk2V2 v p = v ** {c2 = mkComplement p.s ; lock_V2 = <>} ; dirV2 v = mk2V2 v (mkPrep []) ; - mkV3 v p q = v ** {c2 = p.s ; c3 = q.s ; lock_V3 = <>} ; + mkV3 v p q = v ** {c2 = mkComplement p.s ; c3 = mkComplement q.s ; lock_V3 = <>} ; dirV3 v p = mkV3 v noPrep p ; dirdirV3 v = dirV3 v noPrep ; mkV0 v = v ** {lock_V0 = <>} ; mkVS v = v ** {lock_VS = <>} ; mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ; - mkVV v = v ** {c2 = "å" ; lock_VV = <>} ; - mkV2V v p t = mk2V2 v p ** {c3 = "att" ; lock_V2V = <>} ; + mkVV v = v ** {c2 = mkComplement "at" ; lock_VV = <>} ; + mkV2V v p t = mk2V2 v p ** {c3 = mkComplement "at" ; lock_V2V = <>} ; mkVA v = v ** {lock_VA = <>} ; mkV2A v p = mk2V2 v p ** {lock_V2A = <>} ; mkVQ v = v ** {lock_VQ = <>} ; diff --git a/lib/resource-1.4/danish/StructuralDan.gf b/lib/resource-1.4/danish/StructuralDan.gf index 0790978fe..3af15d100 100644 --- a/lib/resource-1.4/danish/StructuralDan.gf +++ b/lib/resource-1.4/danish/StructuralDan.gf @@ -21,7 +21,7 @@ concrete StructuralDan of Structural = CatDan ** by8means_Prep = ss "med" ; can8know_VV, can_VV = mkV "kunne" "kan" "kan" "kunne" "kunnet" "kan" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; during_Prep = ss "under" ; either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ; everybody_NP = regNP "alle" "alles" Plg ; @@ -50,7 +50,8 @@ concrete StructuralDan of Structural = CatDan ** most_Predet = {s = gennumForms ["den meste"] ["det meste"] ["de fleste"]} ; much_Det = {s = \\_,_ => "meget" ; n = Pl ; det = DDef Indef} ; must_VV = - mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** {c2 = [] ; lock_VV = <>} ; + mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** + {c2 = mkComplement [] ; lock_VV = <>} ; no_Utt = ss ["nej"] ; on_Prep = ss "på" ; --- one_Quant = {s = \\_ => genderForms ["en"] ["et"] ; n = Sg ; det = DIndef} ; --- ei @@ -94,7 +95,7 @@ concrete StructuralDan of Structural = CatDan ** very_AdA = ss "meget" ; want_VV = mkV "ville" "vil" "vil" "ville" "villet" "villed" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; we_Pron = MorphoDan.mkNP "vi" "os" "vores" "vores" "vores" Plg P1 ; whatSg_IP = {s = \\_ => "hvad" ; gn = SgUtr} ; ---- infl whatPl_IP = {s = \\_ => "hvilke" ; gn = Plg} ; ---- infl diff --git a/lib/resource-1.4/exx-resource.gft b/lib/resource-1.4/exx-resource.gft index 8c0d311f6..c99642db9 100644 --- a/lib/resource-1.4/exx-resource.gft +++ b/lib/resource-1.4/exx-resource.gft @@ -83,8 +83,8 @@ AdjCN (PositA big_A) (UseN house_N) RelCN (UseN house_N) (UseRCl TPast ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a buy_V2)))) AdvCN (UseN house_N) (PrepNP on_Prep (DetArtSg DefArt (UseN hill_N))) SentCN (UseN question_N) (EmbedQS (UseQCl TPres ASimul PPos (QuestIAdv where_IAdv (PredVP (UsePron she_Pron) (UseV sleep_V))))) -ApposCN (UseN city_N) (UsePN paris_PN) - +DetArtSg DefArt (ApposCN (UseN city_N) (UsePN paris_PN)) +DetCN (DetQuant (PossPron i_Pron) NumSg) (ApposCN (UseN friend_N) (UsePN john_PN)) -- Numeral diff --git a/lib/resource-1.4/norwegian/DiffNor.gf b/lib/resource-1.4/norwegian/DiffNor.gf index d485f9e7e..3723369f2 100644 --- a/lib/resource-1.4/norwegian/DiffNor.gf +++ b/lib/resource-1.4/norwegian/DiffNor.gf @@ -72,9 +72,9 @@ instance DiffNor of DiffScand = open CommonScand, Prelude in { } ; relPron : GenNum => RCase => Str = \\gn,c => case c of { - RNom => "som" ; + RNom | RPrep False => "som" ; RGen => "hvis" ; - RPrep => gennumForms "hvilken" "hvilket" "hvilke" ! gn + RPrep _ => gennumForms "hvilken" "hvilket" "hvilke" ! gn } ; pronSuch = gennumForms "sådan" "sådant" "sådanne" ; diff --git a/lib/resource-1.4/norwegian/IdiomNor.gf b/lib/resource-1.4/norwegian/IdiomNor.gf index fbb7f6a9c..998d8fa8d 100644 --- a/lib/resource-1.4/norwegian/IdiomNor.gf +++ b/lib/resource-1.4/norwegian/IdiomNor.gf @@ -9,12 +9,10 @@ concrete IdiomNor of Idiom = CatNor ** GenericCl vp = mkClause "man" (agrP3 utrum Sg) vp ; CleftNP np rs = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) - (insertObj (\\_ => rs.s ! np.a) - (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + (insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a) (predV verbBe)) ; CleftAdv ad s = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) - (insertObj (\\_ => "som" ++ s.s ! Sub) - (insertObj (\\_ => ad.s) (predV verbBe))) ; + (insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ; ExistNP np = mkClause "det" (agrP3 ParadigmsNor.neutrum Sg) (insertObj diff --git a/lib/resource-1.4/norwegian/LexiconNor.gf b/lib/resource-1.4/norwegian/LexiconNor.gf index 5972338de..cceb25b41 100644 --- a/lib/resource-1.4/norwegian/LexiconNor.gf +++ b/lib/resource-1.4/norwegian/LexiconNor.gf @@ -100,7 +100,7 @@ lin important_A = regADeg "viktig" ; industry_N = mk2N "industri" "industrien" ; iron_N = regGenN "jern" neutrum ; - john_PN = mkPN "John" utrum ; + john_PN = mkPN "John" masculine ; king_N = regGenN "konge" masculine ; know_V2 = dirV2 IrregNor.vite_V ; lake_N = regGenN "vann" neutrum ; diff --git a/lib/resource-1.4/norwegian/ParadigmsNor.gf b/lib/resource-1.4/norwegian/ParadigmsNor.gf index ee662323f..cdb71a1e6 100644 --- a/lib/resource-1.4/norwegian/ParadigmsNor.gf +++ b/lib/resource-1.4/norwegian/ParadigmsNor.gf @@ -312,9 +312,9 @@ oper } ; - mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; + mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = mkComplement p.s} ; regN2 n g = mkN2 (regGenN n g) (mkPrep "av") ; - mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = mkComplement p.s ; c3 = mkComplement q.s} ; regGenPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ; regPN n = regGenPN n utrum ; @@ -332,7 +332,7 @@ oper mk2A a b = mk3A a b (a + "e") ; regA a = (regADeg a) ** {isComp = False ; lock_A = <>} ; - mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + mkA2 a p = a ** {c2 = mkComplement p.s ; lock_A2 = <>} ; mkADeg a b c d e = mkAdject a b c d e ** {isComp = False ; lock_A = <>} ; regADeg a = case Predef.dp 2 a of { @@ -404,18 +404,18 @@ oper depV v = {s = v.s ; part = v.part ; vtype = VPass ; isVaere = False ; lock_V = <>} ; reflV v = {s = v.s ; part = v.part ; vtype = VRefl ; isVaere = False ; lock_V = <>} ; - mk2V2 v p = v ** {c2 = p.s ; lock_V2 = <>} ; + mk2V2 v p = v ** {c2 = mkComplement p.s ; lock_V2 = <>} ; dirV2 v = mk2V2 v noPrep ; - mkV3 v p q = v ** {c2 = p.s ; c3 = q.s ; lock_V3 = <>} ; + mkV3 v p q = v ** {c2 = mkComplement p.s ; c3 = mkComplement q.s ; lock_V3 = <>} ; dirV3 v p = mkV3 v noPrep p ; dirdirV3 v = dirV3 v noPrep ; mkV0 v = v ** {lock_V0 = <>} ; mkVS v = v ** {lock_VS = <>} ; mkV2S v p = mk2V2 v p ** {lock_V2S = <>} ; - mkVV v = v ** {c2 = "å" ; lock_VV = <>} ; - mkV2V v p t = mk2V2 v p ** {c3 = "att" ; lock_V2V = <>} ; + mkVV v = v ** {c2 = mkComplement "å" ; lock_VV = <>} ; + mkV2V v p t = mk2V2 v p ** {c3 = mkComplement "att" ; lock_V2V = <>} ; mkVA v = v ** {lock_VA = <>} ; mkV2A v p = mk2V2 v p ** {lock_V2A = <>} ; mkVQ v = v ** {lock_VQ = <>} ; diff --git a/lib/resource-1.4/norwegian/StructuralNor.gf b/lib/resource-1.4/norwegian/StructuralNor.gf index 690c4918d..7f23ddd62 100644 --- a/lib/resource-1.4/norwegian/StructuralNor.gf +++ b/lib/resource-1.4/norwegian/StructuralNor.gf @@ -21,7 +21,7 @@ concrete StructuralNor of Structural = CatNor ** by8means_Prep = ss "med" ; can8know_VV, can_VV = mkV "kunne" "kan" "kunn" "kunne" "kunnet" "kunnen" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; during_Prep = ss "under" ; either7or_DConj = sd2 "enten" "eller" ** {n = Sg} ; everybody_NP = regNP "alle" "alles" Plg ; @@ -50,7 +50,8 @@ concrete StructuralNor of Structural = CatNor ** most_Predet = {s = gennumForms ["den meste"] ["det meste"] ["de fleste"]} ; much_Det = {s = \\_,_ => "mye" ; n = Pl ; det = DDef Indef} ; must_VV = - mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** {c2 = [] ; lock_VV = <>} ; + mkV "måtte" "må" "må" "måtte" "måttet" "mått" ** + {c2 = mkComplement [] ; lock_VV = <>} ; no_Utt = ss ["nei"] ; on_Prep = ss "på" ; --- one_Quant = {s = \\_ => genderForms ["en"] ["et"] ; n = Sg ; det = DIndef} ; DEPREC @@ -94,7 +95,7 @@ concrete StructuralNor of Structural = CatNor ** very_AdA = ss "mye" ; want_VV = mkV "ville" "vil" "vill" "ville" "villet" "villed" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; we_Pron = MorphoNor.mkNP "vi" "oss" "vår" "vårt" "våre" Plg P1 ; whatSg_IP = {s = \\_ => "hva" ; gn = SgUtr} ; ---- infl whatPl_IP = {s = \\_ => "hva" ; gn = Plg} ; ---- infl diff --git a/lib/resource-1.4/scandinavian/AdjectiveScand.gf b/lib/resource-1.4/scandinavian/AdjectiveScand.gf index fd2f3c1a5..1570574cb 100644 --- a/lib/resource-1.4/scandinavian/AdjectiveScand.gf +++ b/lib/resource-1.4/scandinavian/AdjectiveScand.gf @@ -19,12 +19,12 @@ incomplete concrete AdjectiveScand of Adjective = -- $SuperlA$ belongs to determiner syntax in $Noun$. ComplA2 a np = { - s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2 ++ np.s ! accusative ; + s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++ np.s ! accusative ; isPre = False } ; ReflA2 a = { - s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2 ++ + s = \\ap => a.s ! AF (APosit ap) Nom ++ a.c2.s ++ reflPron (agrP3 utrum Sg) ; ---- isPre = False } ; diff --git a/lib/resource-1.4/scandinavian/CatScand.gf b/lib/resource-1.4/scandinavian/CatScand.gf index 9bf2b1ecb..02467884b 100644 --- a/lib/resource-1.4/scandinavian/CatScand.gf +++ b/lib/resource-1.4/scandinavian/CatScand.gf @@ -10,12 +10,15 @@ incomplete concrete CatScand of Cat = S = {s : Order => Str} ; QS = {s : QForm => Str} ; RS = {s : Agr => Str ; c : NPForm} ; - SSlash = {s : Order => Str} ** {c2 : Str} ; + SSlash = {s : Order => Str} ** {c2 : Complement} ; -- Sentence Cl = {s : R.Tense => Anteriority => Polarity => Order => Str} ; - ClSlash = {s : R.Tense => Anteriority => Polarity => Order => Str} ** {c2 : Str} ; + ClSlash = { + s : R.Tense => Anteriority => Polarity => Order => Str ; + c2 : Complement + } ; Imp = {s : Polarity => Number => Str} ; -- Question @@ -44,7 +47,7 @@ incomplete concrete CatScand of Cat = ext : Str ; -- S-Ext att hon går ---s7 en2,ea2,eext : Bool -- indicate if the field exists } ; - VPSlash = CommonScand.VP ** {c2 : Str} ; + VPSlash = CommonScand.VP ** {c2 : Complement} ; Comp = {s : AFormPos => Str} ; @@ -63,7 +66,7 @@ incomplete concrete CatScand of Cat = NP,Pron = {s : NPForm => Str ; a : Agr} ; Det = {s : Bool => Gender => Str ; n : Number ; det : DetSpecies} ; Quant = {s : Number => Bool => Gender => Str ; det : DetSpecies} ; - Art = {s : Number => Bool => Gender => Str ; det : DetSpecies} ; + Art = {s : Number => Bool => Bool => Gender => Str ; det : DetSpecies} ; Predet = {s : GenNum => Str} ; Num = {s : Gender => Str ; isDet : Bool ; n : Number} ; Card = {s : Gender => Str ; n : Number} ; @@ -83,17 +86,17 @@ incomplete concrete CatScand of Cat = -- Open lexical classes, e.g. Lexicon V, VS, VQ, VA = Verb ; - V2, VV, V2Q, V2S, V2A = Verb ** {c2 : Str} ; - V3, V2V = Verb ** {c2,c3 : Str} ; + V2, VV, V2Q, V2S, V2A = Verb ** {c2 : Complement} ; + V3, V2V = Verb ** {c2,c3 : Complement} ; A = Adjective ** {isComp : Bool} ; -- {s : AForm => Str} ; - A2 = Adjective ** {isComp : Bool ; c2 : Str} ; + A2 = Adjective ** {isComp : Bool ; c2 : Complement} ; N = Noun ; -- {s : Number => Species => Case => Str ; g : Gender} ; - N2 = Noun ** {c2 : Str} ; - N3 = Noun ** {c2,c3 : Str} ; + N2 = Noun ** {c2 : Complement} ; + N3 = Noun ** {c2,c3 : Complement} ; PN = {s : Case => Str ; g : Gender} ; } diff --git a/lib/resource-1.4/scandinavian/CommonScand.gf b/lib/resource-1.4/scandinavian/CommonScand.gf index e327a09c1..487082305 100644 --- a/lib/resource-1.4/scandinavian/CommonScand.gf +++ b/lib/resource-1.4/scandinavian/CommonScand.gf @@ -59,11 +59,13 @@ param --- AdjPronForm = APron GenNum Case ; --- AuxVerbForm = AuxInf | AuxPres | AuxPret | AuxSup ; - RCase = RNom | RGen | RPrep ; + RCase = RNom | RGen | RPrep Bool ; RAgr = RNoAg | RAg {gn : GenNum ; p : Person} ; oper + Complement : Type = {s : Str ; hasPrep : Bool} ; + Agr : PType = {gn : GenNum ; p : Person} ; nominative : NPForm = NPNom ; @@ -79,6 +81,13 @@ oper _ => Indef } ; + mkComplement : Str -> Complement = \s -> { + s = s ; + hasPrep = case s of { + "" => False ; + _ => True + } + } ; -- Used in $Noun.AdjCN$. ----- agrAdj : GenNum -> DetSpecies -> AFormPos = \gn,d -> Strong gn ; --- debug diff --git a/lib/resource-1.4/scandinavian/NounScand.gf b/lib/resource-1.4/scandinavian/NounScand.gf index 3279e694a..edabe8228 100644 --- a/lib/resource-1.4/scandinavian/NounScand.gf +++ b/lib/resource-1.4/scandinavian/NounScand.gf @@ -69,14 +69,14 @@ incomplete concrete NounScand of Noun = } ; DetArtOrd quant num ord = { - s = \\b,g => quant.s ! num.n ! (orB b num.isDet) ! g ++ + s = \\b,g => quant.s ! num.n ! b ! num.isDet ! g ++ num.s ! g ++ ord.s ; n = num.n ; det = quant.det } ; DetArtCard quant num = { - s = \\b,g => quant.s ! num.n ! b ! g ++ num.s ! g ; + s = \\b,g => quant.s ! num.n ! b ! True ! g ++ num.s ! g ; n = num.n ; det = quant.det } ; @@ -91,7 +91,7 @@ incomplete concrete NounScand of Noun = => d } in { - s = \\c => det.s ! n ! cn.isMod ! cn.g ++ + s = \\c => det.s ! n ! cn.isMod ! False ! cn.g ++ cn.s ! n ! dd ! caseNP c ; a = agrP3 g n } ; @@ -106,7 +106,7 @@ incomplete concrete NounScand of Noun = => d } in { - s = \\c => det.s ! n ! cn.isMod ! cn.g ++ + s = \\c => det.s ! n ! cn.isMod ! False !cn.g ++ cn.s ! n ! dd ! caseNP c ; a = agrP3 g n } ; @@ -139,14 +139,14 @@ incomplete concrete NounScand of Noun = } ; DefArt = { - s = \\n,b,g => if_then_Str b (artDef (gennum g n)) [] ; + s = \\n,bm,bn,g => if_then_Str (orB bm bn) (artDef (gennum g n)) [] ; det = DDef Def } ; IndefArt = { s = table { - Sg => \\_ => artIndef ; - Pl => \\_,_ => [] + Sg => \\_,bn,g => if_then_Str bn [] (artIndef ! g) ; + Pl => \\_,bn,_ => [] } ; det = DIndef } ; @@ -180,12 +180,12 @@ incomplete concrete NounScand of Noun = -- The genitive of this $NP$ is not correct: "sonen till mig" (not "migs"). ComplN2 f x = { - s = \\n,d,c => f.s ! n ! specDet d ! Nom ++ f.c2 ++ x.s ! accusative ; + s = \\n,d,c => f.s ! n ! specDet d ! Nom ++ f.c2.s ++ x.s ! accusative ; g = f.g ; isMod = False } ; ComplN3 f x = { - s = \\n,d,c => f.s ! n ! d ! Nom ++ f.c2 ++ x.s ! accusative ; + s = \\n,d,c => f.s ! n ! d ! Nom ++ f.c2.s ++ x.s ! accusative ; g = f.g ; c2 = f.c3 ; isMod = False @@ -207,7 +207,7 @@ incomplete concrete NounScand of Noun = } ; RelNP np rs = { - s = \\c => np.s ! c ++ rs.s ! np.a ; + s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ; a = np.a ; isMod = np.isMod } ; diff --git a/lib/resource-1.4/scandinavian/QuestionScand.gf b/lib/resource-1.4/scandinavian/QuestionScand.gf index db7fd2dc5..57b9d44d3 100644 --- a/lib/resource-1.4/scandinavian/QuestionScand.gf +++ b/lib/resource-1.4/scandinavian/QuestionScand.gf @@ -30,7 +30,7 @@ incomplete concrete QuestionScand of Question = s = \\t,a,p => let cls = slash.s ! t ! a ! p ; - who = slash.c2 ++ ip.s ! accusative --- stranding in ExtScand + who = slash.c2.s ++ ip.s ! accusative --- stranding in ExtScand in table { QDir => who ++ cls ! Inv ; QIndir => who ++ cls ! Sub diff --git a/lib/resource-1.4/scandinavian/RelativeScand.gf b/lib/resource-1.4/scandinavian/RelativeScand.gf index 633270eee..3ea27ff60 100644 --- a/lib/resource-1.4/scandinavian/RelativeScand.gf +++ b/lib/resource-1.4/scandinavian/RelativeScand.gf @@ -1,5 +1,5 @@ incomplete concrete RelativeScand of Relative = - CatScand ** open CommonScand, ResScand in { + CatScand ** open CommonScand, ResScand, Prelude in { flags optimize=all_subs ; @@ -29,14 +29,15 @@ incomplete concrete RelativeScand of Relative = RelSlash rp slash = { s = \\t,a,p,ag => - slash.c2 ++ rp.s ! ag.gn ! RPrep ++ slash.s ! t ! a ! p ! Sub ; + slash.c2.s ++ rp.s ! ag.gn ! RPrep slash.c2.hasPrep ++ + slash.s ! t ! a ! p ! Sub ; c = NPAcc } ; --- The case here could be genitive. FunRP p np rp = { - s = \\gn,c => np.s ! nominative ++ p.s ++ rp.s ! gn ! RPrep ; + s = \\gn,c => np.s ! nominative ++ p.s ++ rp.s ! gn ! RPrep True ; a = RAg np.a } ; diff --git a/lib/resource-1.4/scandinavian/SentenceScand.gf b/lib/resource-1.4/scandinavian/SentenceScand.gf index 378b3d80d..4dc69fec5 100644 --- a/lib/resource-1.4/scandinavian/SentenceScand.gf +++ b/lib/resource-1.4/scandinavian/SentenceScand.gf @@ -1,5 +1,5 @@ incomplete concrete SentenceScand of Sentence = - CatScand ** open CommonScand, ResScand in { + CatScand ** open CommonScand, ResScand, Prelude in { flags optimize=all_subs ; @@ -28,7 +28,7 @@ incomplete concrete SentenceScand of Sentence = c2 = slash.c2 } ; - SlashPrep cl prep = cl ** {c2 = prep.s} ; + SlashPrep cl prep = cl ** {c2 = {s = prep.s ; hasPrep = True}} ; SlashVS np vs slash = mkClause diff --git a/lib/resource-1.4/scandinavian/VerbScand.gf b/lib/resource-1.4/scandinavian/VerbScand.gf index acac15b12..82a39e154 100644 --- a/lib/resource-1.4/scandinavian/VerbScand.gf +++ b/lib/resource-1.4/scandinavian/VerbScand.gf @@ -8,17 +8,17 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i SlashV2a v = predV v ** {c2 = v.c2} ; Slash2V3 v np = - insertObj (\\_ => v.c2 ++ np.s ! accusative) (predV v) ** {c2 = v.c3} ; + insertObj (\\_ => v.c2.s ++ np.s ! accusative) (predV v) ** {c2 = v.c3} ; Slash3V3 v np = - insertObj (\\_ => v.c3 ++ np.s ! accusative) (predV v) ** {c2 = v.c2} ; + insertObj (\\_ => v.c3.s ++ np.s ! accusative) (predV v) ** {c2 = v.c2} ; - ComplVV v vp = insertObj (\\a => v.c2 ++ infVP vp a) (predV v) ; + ComplVV v vp = insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ; ComplVS v s = insertObj (\\_ => conjThat ++ s.s ! Sub) (predV v) ; ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; ComplVA v ap = insertObj (\\a => ap.s ! agrAdj a.gn DIndef) (predV v) ; SlashV2V v vp = - insertObj (\\a => v.c3 ++ infVP vp a) (predV v) ** {c2 = v.c2} ; + insertObj (\\a => v.c3.s ++ infVP vp a) (predV v) ** {c2 = v.c2} ; SlashV2S v s = insertObj (\\_ => conjThat ++ s.s ! Sub) (predV v) ** {c2 = v.c2} ; SlashV2Q v q = @@ -27,13 +27,13 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i insertObj (\\a => ap.s ! agrAdj a.gn DIndef) (predV v) ** {c2 = v.c2} ; ---- agr to obj - ComplSlash vp np = insertObj (\\_ => vp.c2 ++ np.s ! accusative) vp ; + ComplSlash vp np = insertObj (\\_ => vp.c2.s ++ np.s ! accusative) vp ; SlashVV v vp = - insertObj (\\a => v.c2 ++ infVP vp a) (predV v) ** {c2 = vp.c2} ; + insertObj (\\a => v.c2.s ++ infVP vp a) (predV v) ** {c2 = vp.c2} ; SlashV2VNP v np vp = insertObj - (\\a => v.c2 ++ np.s ! accusative ++ v.c3 ++ infVP vp a) (predV v) + (\\a => v.c2.s ++ np.s ! accusative ++ v.c3.s ++ infVP vp a) (predV v) ** {c2 = v.c2} ; UseComp comp = insertObj (\\a => comp.s ! agrAdj a.gn DIndef) (predV verbBe) ; @@ -46,7 +46,7 @@ incomplete concrete VerbScand of Verb = CatScand ** open CommonScand, ResScand i AdVVP adv vp = insertAdV adv.s vp ; - ReflVP vp = insertObj (\\a => vp.c2 ++ reflPron a) vp ; + ReflVP vp = insertObj (\\a => vp.c2.s ++ reflPron a) vp ; PassV2 v = insertObj diff --git a/lib/resource-1.4/swedish/DiffSwe.gf b/lib/resource-1.4/swedish/DiffSwe.gf index 78a88dcb2..97d9fa9cd 100644 --- a/lib/resource-1.4/swedish/DiffSwe.gf +++ b/lib/resource-1.4/swedish/DiffSwe.gf @@ -80,9 +80,9 @@ instance DiffSwe of DiffScand = open CommonScand, Prelude in { } ; relPron : GenNum => RCase => Str = \\gn,c => case c of { - RNom => "som" ; + RNom | RPrep False => "som" ; RGen => "vars" ; - RPrep => gennumForms "vilken" "vilket" "vilka" ! gn + RPrep True => gennumForms "vilken" "vilket" "vilka" ! gn } ; pronSuch = gennumForms "sådan" "sådant" "sådana" ; diff --git a/lib/resource-1.4/swedish/IdiomSwe.gf b/lib/resource-1.4/swedish/IdiomSwe.gf index 88d360a77..65ebf9b30 100644 --- a/lib/resource-1.4/swedish/IdiomSwe.gf +++ b/lib/resource-1.4/swedish/IdiomSwe.gf @@ -12,13 +12,10 @@ concrete IdiomSwe of Idiom = CatSwe ** GenericCl vp = mkClause "man" (agrP3 utr Sg) vp ; CleftNP np rs = mkClause "det" (agrP3 neutr Sg) - (insertObj (\\_ => rs.s ! np.a) - (insertObj (\\_ => np.s ! rs.c) (predV verbBe))) ; + (insertObj (\\_ => np.s ! rs.c ++ rs.s ! np.a) (predV verbBe)) ; CleftAdv ad s = mkClause "det" (agrP3 neutr Sg) - (insertObj (\\_ => "som" ++ s.s ! Sub) - (insertObj (\\_ => ad.s) (predV verbBe))) ; - + (insertObj (\\_ => ad.s ++ s.s ! Sub) (predV verbBe)) ; ExistNP np = mkClause "det" (agrP3 neutr Sg) (insertObj diff --git a/lib/resource-1.4/swedish/LexiconSwe.gf b/lib/resource-1.4/swedish/LexiconSwe.gf index 87bd0ceee..3bca3ec0f 100644 --- a/lib/resource-1.4/swedish/LexiconSwe.gf +++ b/lib/resource-1.4/swedish/LexiconSwe.gf @@ -155,7 +155,7 @@ lin say_VS = mkVS (mkV "säga" "säger" "säg" "sade" "sagt" "sagd") ; school_N = regGenN "skola" utrum; science_N = mk2N "vetenskap" "vetenskaper" ; - sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ; + sea_N = mkN "hav" "hav" ; seek_V2 = dirV2 (mk2V "söka" "sökte") ; see_V2 = dirV2 (mkV "se" "ser" "se" "såg" "sett" "sedd") ; sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") (mkPrep "till") ; diff --git a/lib/resource-1.4/swedish/ParadigmsSwe.gf b/lib/resource-1.4/swedish/ParadigmsSwe.gf index e033d33fa..33b7bd9ea 100644 --- a/lib/resource-1.4/swedish/ParadigmsSwe.gf +++ b/lib/resource-1.4/swedish/ParadigmsSwe.gf @@ -415,9 +415,10 @@ oper regN2 : Str -> Gender -> N2 ; - mmkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p.s} ; + mmkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = mkComplement p.s} ; regN2 n g = mmkN2 (regGenN n g) (mkPrep "av") ; - mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p.s ; c3 = q.s} ; + mkN3 = \n,p,q -> n ** + {lock_N3 = <> ; c2 = mkComplement p.s ; c3 = mkComplement q.s} ; mkPN = overload { mkPN : Str -> PN = regPN ; @@ -474,7 +475,7 @@ oper compoundA adj = {s = adj.s ; isComp = True ; lock_A = <>} ; - mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + mkA2 a p = a ** {c2 = mkComplement p.s ; lock_A2 = <>} ; mkAdv x = ss x ** {lock_Adv = <>} ; mkAdV x = ss x ** {lock_AdV = <>} ; @@ -566,7 +567,7 @@ oper } ; - mmkV2 v p = v ** {c2 = p.s ; lock_V2 = <>} ; + mmkV2 v p = v ** {c2 = mkComplement p.s ; lock_V2 = <>} ; dirV2 v = mmkV2 v noPrep ; mkV3 = overload { @@ -581,13 +582,13 @@ oper dirdirV3 : V -> V3 ; -- ge, (dat), (acc) - mmkV3 v p q = v ** {c2 = p.s ; c3 = q.s ; lock_V3 = <>} ; + mmkV3 v p q = v ** {c2 = mkComplement p.s ; c3 = mkComplement q.s ; lock_V3 = <>} ; dirV3 v p = mmkV3 v noPrep p ; dirdirV3 v = dirV3 v noPrep ; mkV0 v = v ** {lock_V0 = <>} ; mkVS v = v ** {lock_VS = <>} ; - mkVV v = v ** {c2 = "att" ; lock_VV = <>} ; + mkVV v = v ** {c2 = mkComplement "att" ; lock_VV = <>} ; mkVQ v = v ** {lock_VQ = <>} ; mkVA v = v ** {lock_VA = <>} ; @@ -599,7 +600,7 @@ oper A2V : Type = A2 ; mkV2S v p = mmkV2 v p ** {lock_V2S = <>} ; - mkV2V v p t = mmkV2 v p ** {c3 = "att" ; lock_V2V = <>} ; + mkV2V v p t = mmkV2 v p ** {c3 = mkComplement "att" ; lock_V2V = <>} ; mkV2Q v p = mmkV2 v p ** {lock_V2Q = <>} ; mkAS v = v ** {lock_A = <>} ; diff --git a/lib/resource-1.4/swedish/StructuralSwe.gf b/lib/resource-1.4/swedish/StructuralSwe.gf index a808de577..ec7200bae 100644 --- a/lib/resource-1.4/swedish/StructuralSwe.gf +++ b/lib/resource-1.4/swedish/StructuralSwe.gf @@ -21,7 +21,7 @@ concrete StructuralSwe of Structural = CatSwe ** by8means_Prep = ss "med" ; can8know_VV, can_VV = mkV "kunna" "kan" "kunn" "kunde" "kunnat" "kunnen" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; during_Prep = ss "under" ; either7or_DConj = sd2 "antingen" "eller" ** {n = Sg} ; everybody_NP = regNP "alla" "allas" Plg ; @@ -49,7 +49,8 @@ concrete StructuralSwe of Structural = CatSwe ** most_Predet = {s = gennumForms ["den mesta"] ["det mesta"] ["de flesta"]} ; much_Det = {s = \\_,_ => "mycket" ; n = Pl ; det = DDef Indef} ; must_VV = - mkV "få" "måste" "få" "fick" "måst" "måst" ** {c2 = [] ; lock_VV = <>} ; + mkV "få" "måste" "få" "fick" "måst" "måst" ** + {c2 = mkComplement [] ; lock_VV = <>} ; no_Utt = ss ["nej"] ; on_Prep = ss "på" ; --- one_Quant = {s = \\_ => genderForms ["en"] ["ett"] ; n = Sg ; det = DIndef} ; @@ -93,7 +94,7 @@ concrete StructuralSwe of Structural = CatSwe ** very_AdA = ss "mycket" ; want_VV = mkV "vilja" "vill" "vilj" "ville" "velat" "velad" ** - {c2 = [] ; lock_VV = <>} ; + {c2 = mkComplement [] ; lock_VV = <>} ; we_Pron = MorphoSwe.mkNP "vi" "oss" "vår" "vårt" "våra" Plg P1 ; whatSg_IP = {s = \\_ => "vad" ; gn = SgUtr} ; ---- infl whatPl_IP = {s = \\_ => "vad" ; gn = Plg} ; ---- infl