diff --git a/src/czech/CatCze.gf b/src/czech/CatCze.gf index 29b3e1fc..467ad2af 100644 --- a/src/czech/CatCze.gf +++ b/src/czech/CatCze.gf @@ -45,7 +45,7 @@ concrete CatCze of Cat = -- Modifiers restore full forms. s and prep are always available for strong use. -- m controls NP modifiers; a controls the clause. Scale nouns can differ. -- A modified pronoun can keep its pronominal head without a weak form. - NP = NPForms ** {clit : Case => Str ; a : Agr ; m : ModifierAgr ; hasClit,isDrop,isPron : Bool} ; + NP = NPForms ** {clit : Case => Str ; a : Agr ; hasClit,isDrop,isPron : Bool} ; PN = {s : Case => Str ; g : Gender} ; Ord = Adjective ; Det = Determiner ; -- {s : Gender => Case => Str ; size : NumSize} ; -- can contain a numeral, therefore NumSize diff --git a/src/czech/ConjunctionCze.gf b/src/czech/ConjunctionCze.gf index 3735d97f..c33bfd6c 100644 --- a/src/czech/ConjunctionCze.gf +++ b/src/czech/ConjunctionCze.gf @@ -5,7 +5,7 @@ concrete ConjunctionCze of Conjunction = CatCze ** [Adv] = {s1,s2 : Str} ; [CN] = {s1,s2 : Number => Case => Str ; g,gPl : Gender} ; [AP] = {s1,s2 : Gender => Number => Case => Str ; pred1,pred2 : Agr => Str ; isPost : Bool} ; - [NP] = {s1,s2,prep1,prep2 : Case => Str ; a : Agr ; m : ModifierAgr} ; + [NP] = {s1,s2,prep1,prep2 : Case => Str ; a : Agr} ; [S] = {s1 : Sentence ; s2 : Str} ; [RS] = {s1,s2 : Agr => Str} ; diff --git a/src/czech/ExtendCze.gf b/src/czech/ExtendCze.gf index a8fbbc6d..4e526a30 100644 --- a/src/czech/ExtendCze.gf +++ b/src/czech/ExtendCze.gf @@ -70,7 +70,7 @@ lincat RNPList = {s1,s2,prep1,prep2 : Agr => Case => Str ; m : RNPHead} ; param - RNPHead = AntecedentHead | FixedHead ModifierAgr ; + RNPHead = AntecedentHead | FixedHead Agr ; lin MkVPS temp pol vp = {s = \\a => @@ -188,7 +188,7 @@ lin (\\c => predetForm pred (rnpAgr rnp.m a) c) (rnpForms rnp a)) ; AdvRNP np p rnp = boundNPForms (\\a => appendNPForms np (fullComplement p (rnp.s ! a) (rnp.prep ! a))) ** { - m = FixedHead np.m ; isPron = np.isPron + m = FixedHead np.a ; isPron = np.isPron } ; AdvRVP vp p rnp = vp ** { compl = \\a => vp.compl ! a ++ fullComplement p (rnp.s ! a) (rnp.prep ! a) @@ -213,7 +213,7 @@ oper let forms : Case => Str = \\c => dap.s ! g ! c ; agr = numeralAgr g dap P3 in lin NP (npForms forms forms ** { - clit = forms ; a = agr ; m = numeralModAgr g dap ; + clit = forms ; a = agr ; hasClit = False ; isDrop = False ; isPron = False }) ; @@ -233,15 +233,13 @@ oper } ; -- Ordinary NPs and possessed heads have their own modifier agreement. fullRNP : S.NP -> RNP = \np -> lin RNP (boundNPForms (\\_ => np) ** { - m = FixedHead np.m ; isPron = np.isPron + m = FixedHead np.a ; isPron = np.isPron }) ; -- A reflexive inherits gender and number, but its own complement position -- selects case: pět dětí miluje sebe všechny, not sebe všech. - rnpAgr : RNPHead -> Agr -> ModifierAgr = \head,a -> case head of { - AntecedentHead => case a of { - AgQuant g => Mod g Pl ; _ => modifierAgr a - } ; - FixedHead m => m + rnpAgr : RNPHead -> Agr -> Agr = \head,a -> case head of { + AntecedentHead => a ; + FixedHead a => a } ; -- As for ordinary NPs, preposed modifiers agree with the first conjunct. baseRNP : RNP -> RNP -> RNPList = \x,y -> lin RNPList { diff --git a/src/czech/NamesCze.gf b/src/czech/NamesCze.gf index 3bb3d87d..f574f2d5 100644 --- a/src/czech/NamesCze.gf +++ b/src/czech/NamesCze.gf @@ -5,33 +5,33 @@ concrete NamesCze of Names = CatCze ** open ResCze, Prelude in { lin GivenName name = npForms (\\_ => name.s) (\\_ => name.s) ** { - clit = \\_ => name.s ; a = Ag (Masc Anim) Sg P3 ; m = Mod (Masc Anim) Sg ; + clit = \\_ => name.s ; a = Ag (Masc Anim) Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; MaleSurname name = npForms (\\_ => name.s) (\\_ => name.s) ** { - clit = \\_ => name.s ; a = Ag (Masc Anim) Sg P3 ; m = Mod (Masc Anim) Sg ; + clit = \\_ => name.s ; a = Ag (Masc Anim) Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; FemaleSurname name = npForms (\\_ => name.s) (\\_ => name.s) ** { - clit = \\_ => name.s ; a = Ag Fem Sg P3 ; m = Mod Fem Sg ; + clit = \\_ => name.s ; a = Ag Fem Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; PlSurname name = npForms (\\_ => name.s) (\\_ => name.s) ** { - clit = \\_ => name.s ; a = Ag (Masc Anim) Pl P3 ; m = Mod (Masc Anim) Pl ; + clit = \\_ => name.s ; a = Ag (Masc Anim) Pl P3 ; hasClit = False ; isDrop = False ; isPron = False } ; FullName name surname = npForms (\\_ => name.s ++ surname.s) (\\_ => name.s ++ surname.s) ** { clit = \\_ => name.s ++ surname.s ; - a = Ag (Masc Anim) Sg P3 ; m = Mod (Masc Anim) Sg ; + a = Ag (Masc Anim) Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; UseLN name = npForms (\\_ => name.s) (\\_ => name.s) ** { - clit = \\_ => name.s ; a = Ag Neutr Sg P3 ; m = Mod Neutr Sg ; + clit = \\_ => name.s ; a = Ag Neutr Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; PlainLN = UseLN ; diff --git a/src/czech/NounCze.gf b/src/czech/NounCze.gf index eb04d103..c2f1bbb7 100644 --- a/src/czech/NounCze.gf +++ b/src/czech/NounCze.gf @@ -18,7 +18,7 @@ lin MassNP cn = let s = cn.s ! Sg in npForms s s ** { clit = s ; - a = Ag cn.g Sg P3 ; m = Mod cn.g Sg ; isPron = False ; + a = Ag cn.g Sg P3 ; isPron = False ; hasClit = False ; isDrop = False ; } ; @@ -65,7 +65,7 @@ lin Loc => pron.loc ; Ins => pron.ins } ; - a = pron.a ; m = modifierAgr pron.a ; + a = pron.a ; hasClit = True ; isDrop = pron.isDrop ; isPron = True ; } ; @@ -73,7 +73,7 @@ lin UsePN pn = npForms pn.s pn.s ** { clit = pn.s ; - a = Ag pn.g Sg P3 ; m = Mod pn.g Sg ; isPron = False ; + a = Ag pn.g Sg P3 ; isPron = False ; hasClit = False ; isDrop = False ; } ; @@ -130,7 +130,7 @@ lin let forms : Case => Str = \\c => det.s ! Neutr ! c ++ np.s ! Gen ; agr = numeralAgr Neutr det P3 in npForms forms forms ** { - clit = forms ; a = agr ; m = Mod Neutr Pl ; + clit = forms ; a = agr ; hasClit = False ; isDrop = False ; isPron = False } ; @@ -149,7 +149,7 @@ lin QuantityNP decimal unit = let forms : Case => Str = \\_ => decimal.s ++ unit.s in npForms forms forms ** { - clit = forms ; a = AgQuant Neutr ; m = Mod Neutr Pl ; + clit = forms ; a = AgQuant Neutr ; hasClit = False ; isDrop = False ; isPron = False } ; @@ -167,7 +167,7 @@ lin PredetNP pred np = let forms = predetNPForms (andB pred.postPron np.isPron) - (\\c => predetForm pred np.m c) np + (\\c => predetForm pred np.a c) np in np ** forms ** { -- A predeterminer modifies a full NP: jen já, jen jeho. Its scope -- cannot be preserved by an omitted subject or an object clitic. diff --git a/src/czech/ResCze.gf b/src/czech/ResCze.gf index 36fd684e..36537987 100644 --- a/src/czech/ResCze.gf +++ b/src/czech/ResCze.gf @@ -1367,8 +1367,6 @@ param -- Nested scales retain the outer head: tato dvě stě tisíc korun. ScaleAgreement = QuantifiedScale | NominalScale ; NumHead = CountedHead | ScaleHead Gender NumSize ScaleAgreement ; - -- NP modifiers have gender/number/case agreement, never verbal person. - ModifierAgr = Mod Gender Number | ModQuant Gender ; oper quantifierForm : Adjective -> Determiner -> Gender -> Case -> Str = \q,num,g,c -> @@ -1383,18 +1381,15 @@ oper -- Predeterminers agree with the NP head, including a quantified head in -- the genitive. This differs from clause agreement for e.g. tisíc korun. - numeralModAgr : Gender -> Determiner -> ModifierAgr = \g,num -> case num.head of { - CountedHead => modifierAgr (numSizeAgr g num.size P3) ; - ScaleHead sg size _ => modifierAgr (numSizeAgr sg size P3) + numeralModAgr : Gender -> Determiner -> Agr = \g,num -> case num.head of { + CountedHead => numSizeAgr g num.size P3 ; + ScaleHead sg size _ => numSizeAgr sg size P3 } ; - modifierAgr : Agr -> ModifierAgr = \a -> case a of { - Ag g n _ => Mod g n ; AgPol g => Mod g Sg ; AgQuant g => ModQuant g - } ; - - predetForm : Adjective -> ModifierAgr -> Case -> Str = \pred,a,c -> case a of { - Mod g n => pred.s ! g ! n ! c ; - ModQuant g => pred.s ! g ! Pl ! countCase Num5 c + predetForm : Adjective -> Agr -> Case -> Str = \pred,a,c -> case a of { + Ag g n _ => pred.s ! g ! n ! c ; + AgPol g => pred.s ! g ! Sg ! c ; + AgQuant g => pred.s ! g ! Pl ! countCase Num5 c } ; -- Keep the boundary for my všichni doma, also after AdvNP. Complete forms diff --git a/src/czech/SentenceCze.gf b/src/czech/SentenceCze.gf index d57c7a15..a2682969 100644 --- a/src/czech/SentenceCze.gf +++ b/src/czech/SentenceCze.gf @@ -75,7 +75,7 @@ lin AdvImp adv imp = {s = \\pos,a => adv.s ++ imp.s ! pos ! a} ; PredSCVP sc vp = PredVP (npForms (\\_ => sc.s) (\\_ => sc.s) ** { - clit = \\_ => sc.s ; a = Ag Neutr Sg P3 ; m = Mod Neutr Sg ; + clit = \\_ => sc.s ; a = Ag Neutr Sg P3 ; hasClit = False ; isDrop = False ; isPron = False}) vp ; EmbedS s = {s = (frontSentence "že" s).s} ; EmbedQS qs = {s = qs.ind} ; diff --git a/src/czech/StructuralCze.gf b/src/czech/StructuralCze.gf index cbfdcef9..cf64a62f 100644 --- a/src/czech/StructuralCze.gf +++ b/src/czech/StructuralCze.gf @@ -56,7 +56,7 @@ lin somePl_Det = regNumeral "několik" "několika" ; -- CEG 6.8 ---- something_NP = let s : Case => Str = \\c => "ně" + coForms ! c in npForms s s ** { - clit = s ; a = Ag Neutr Sg P3 ; m = Mod Neutr Sg ; + clit = s ; a = Ag Neutr Sg P3 ; hasClit = False ; isDrop = False ; isPron = False } ; -- CEG 5.6.3 possess_Prep = mkPrep Gen ;