From 366c7faf89a19af90278043ea997bf911fab373e Mon Sep 17 00:00:00 2001 From: krasimir Date: Thu, 3 Sep 2009 20:13:09 +0000 Subject: [PATCH] refactoring in Bulgarian: use explicit Animacy instead of fourth gender --- lib/src/bulgarian/CatBul.gf | 16 +-- lib/src/bulgarian/ConjunctionBul.gf | 2 +- lib/src/bulgarian/ExtraBul.gf | 4 +- lib/src/bulgarian/MorphoBul.gf | 12 +- lib/src/bulgarian/NounBul.gf | 16 +-- lib/src/bulgarian/NumeralBul.gf | 27 ++-- lib/src/bulgarian/ParadigmsBul.gf | 196 ++++++++++++++-------------- lib/src/bulgarian/QuestionBul.gf | 4 +- lib/src/bulgarian/ResBul.gf | 87 ++++++------ lib/src/bulgarian/SentenceBul.gf | 2 +- lib/src/bulgarian/SymbolBul.gf | 4 +- 11 files changed, 178 insertions(+), 192 deletions(-) diff --git a/lib/src/bulgarian/CatBul.gf b/lib/src/bulgarian/CatBul.gf index f709031e7..f96e43d13 100644 --- a/lib/src/bulgarian/CatBul.gf +++ b/lib/src/bulgarian/CatBul.gf @@ -25,7 +25,7 @@ concrete CatBul of Cat = CommonX - [AAnter,ASimul,IAdv,CAdv] ** open ResBul, Pre QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ; IP = {s : Role => QForm => Str; gn : GenNum} ; IComp = {s : QForm => Str} ; - IDet = {s : DGender => QForm => Str; n : Number ; nonEmpty : Bool} ; + IDet = {s : AGender => QForm => Str; n : Number ; nonEmpty : Bool} ; IQuant = {s : GenNum => QForm => Str} ; -- Relative @@ -51,14 +51,14 @@ concrete CatBul of Cat = CommonX - [AAnter,ASimul,IAdv,CAdv] ** open ResBul, Pre -- Noun - CN = {s : NForm => Str; g : DGender} ; + CN = {s : NForm => Str; g : AGender} ; NP = {s : Role => Str; a : Agr} ; Pron = {s : Role => Str; gen : AForm => Str; a : Agr} ; - Det = {s : Bool => DGender => Role => Str; n : Number; countable : Bool; spec : Species} ; + Det = {s : Bool => AGender => Role => Str; n : Number; countable : Bool; spec : Species} ; Predet = {s : GenNum => Str} ; Ord = {s : AForm => Str} ; - Num = {s : DGenderSpecies => Str; n : Number; nonEmpty : Bool} ; - Card = {s : DGenderSpecies => Str; n : Number} ; + Num = {s : CardForm => Str; n : Number; nonEmpty : Bool} ; + Card = {s : CardForm => Str; n : Number} ; Quant = {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species} ; -- Numeral @@ -83,9 +83,9 @@ concrete CatBul of Cat = CommonX - [AAnter,ASimul,IAdv,CAdv] ** open ResBul, Pre A = {s : AForm => Str; adv : Str} ; A2 = {s : AForm => Str; adv : Str; c2 : Str} ; - N = {s : NForm => Str; g : DGender} ; - N2 = {s : NForm => Str; g : DGender} ** {c2 : Preposition} ; - N3 = {s : NForm => Str; g : DGender} ** {c2,c3 : Preposition} ; + N = {s : NForm => Str; g : AGender} ; + N2 = {s : NForm => Str; g : AGender} ** {c2 : Preposition} ; + N3 = {s : NForm => Str; g : AGender} ** {c2,c3 : Preposition} ; PN = {s : Str; g : Gender} ; diff --git a/lib/src/bulgarian/ConjunctionBul.gf b/lib/src/bulgarian/ConjunctionBul.gf index 23664cd1f..3d1b18486 100644 --- a/lib/src/bulgarian/ConjunctionBul.gf +++ b/lib/src/bulgarian/ConjunctionBul.gf @@ -16,7 +16,7 @@ concrete ConjunctionBul of Conjunction = ConjNP conj ss = { s = \\role => (linCoordSep [])!conj.distr!conj.conj++ss.s!conj.distr!conj.conj!role; - a = {gn = conjGenNum (gennum DMasc conj.n) ss.a.gn; p = ss.a.p} + a = {gn = conjGenNum (gennum (AMasc NonHuman) conj.n) ss.a.gn; p = ss.a.p} } ; ConjAP conj ss = { diff --git a/lib/src/bulgarian/ExtraBul.gf b/lib/src/bulgarian/ExtraBul.gf index 3b2fef62c..417530c7b 100644 --- a/lib/src/bulgarian/ExtraBul.gf +++ b/lib/src/bulgarian/ExtraBul.gf @@ -38,8 +38,8 @@ concrete ExtraBul of ExtraBulAbs = CatBul ** youPol8neut_Pron = mkPron "вие" "вас" "ви" "ваш" "вашия" "вашият" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" (GSg Neut) P2 ; onePl_Num = {s = table { - DMascIndef | DMascPersonalIndef | DFemIndef | DNeutIndef => "едни" ; - DMascDef | DMascDefNom | DMascPersonalDef | DMascPersonalDefNom | DFemDef | DNeutDef => "едните" + CFMasc Indef _ | CFFem Indef | CFNeut Indef => "едни" ; + CFMasc Def _ | CFMascDefNom _ | CFFem Def | CFNeut Def => "едните" } ; n = Pl; nonEmpty = True diff --git a/lib/src/bulgarian/MorphoBul.gf b/lib/src/bulgarian/MorphoBul.gf index e2957bf26..64f25849e 100644 --- a/lib/src/bulgarian/MorphoBul.gf +++ b/lib/src/bulgarian/MorphoBul.gf @@ -21,9 +21,9 @@ resource MorphoBul = ResBul ** open oper --2 Determiners - mkDeterminerSg : Str -> Str -> Str -> {s : Bool => DGender => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako -> - {s = \\_,g,_ => table DGender [vseki;vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ; - mkDeterminerPl : Str -> {s : Bool => DGender => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki -> + mkDeterminerSg : Str -> Str -> Str -> {s : Bool => AGender => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako -> + {s = \\_,g,_ => table AGender [vseki;vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ; + mkDeterminerPl : Str -> {s : Bool => AGender => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki -> {s = \\_,_,_ => vsicki; sp = \\_,_ => vsicki; n = Pl; countable = False; spec = Indef} ; mkQuant : Str -> Str -> Str -> Str -> {s : Bool => AForm => Str; nonEmpty : Bool; spec : Species} = \tozi,tazi,towa,tezi -> @@ -105,7 +105,7 @@ oper --2 Nouns - mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> { + mkNoun : Str -> Str -> Str -> Str -> AGender -> N = \sg,pl,count,voc,g -> { s = table { NF Sg Indef => sg ; NF Sg Def => case sg of { @@ -124,7 +124,7 @@ oper |"зет"|"лакът"|"нокът") =>sg +"я" ; _ =>case g of { - DFem => sg+"та" ; + AFem => sg+"та" ; _ => sg+"а" } } ; @@ -152,7 +152,7 @@ oper |"зет"|"лакът"|"нокът") =>sg+"ят" ; _ =>case g of { - DFem => sg+"та" ; + AFem => sg+"та" ; _ => sg+"ът" } } ; diff --git a/lib/src/bulgarian/NounBul.gf b/lib/src/bulgarian/NounBul.gf index e9206e443..36940e445 100644 --- a/lib/src/bulgarian/NounBul.gf +++ b/lib/src/bulgarian/NounBul.gf @@ -15,11 +15,11 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ; => NF det.n det.spec ; => case cn.g of { - DMascPersonal => NF Pl Indef; - _ => case det.countable of { - True => NFPlCount ; - False => NF Pl Indef - } + AMasc Human => NF Pl Indef; + _ => case det.countable of { + True => NFPlCount ; + False => NF Pl Indef + } } } ; s = det.s ! True ! cn.g ! role ++ cn.s ! nf @@ -31,12 +31,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ; DetNP det = - { s = \\role => let s = det.s ! False ! DNeut ! role + { s = \\role => let s = det.s ! False ! ANeut ! role in case role of { RObj Dat => "на" ++ s; _ => s } ; - a = {gn = gennum DNeut det.n; p = P3} ; + a = {gn = gennum ANeut det.n; p = P3} ; } ; UsePN pn = { s = table { @@ -167,7 +167,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { g = cn.g } ; - SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=DNeut} ; + SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=ANeut} ; ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ; diff --git a/lib/src/bulgarian/NumeralBul.gf b/lib/src/bulgarian/NumeralBul.gf index 021c8566a..6f57efcd0 100644 --- a/lib/src/bulgarian/NumeralBul.gf +++ b/lib/src/bulgarian/NumeralBul.gf @@ -22,16 +22,13 @@ lin n9 = mkDigit " lin pot01 = {s = table { unit => table { - NCard DMascIndef => "един" ; - NCard DMascDef => "единия" ; - NCard DMascDefNom => "единият" ; - NCard DMascPersonalIndef => "един" ; - NCard DMascPersonalDef => "единия" ; - NCard DMascPersonalDefNom => "единият" ; - NCard DFemIndef => "една" ; - NCard DFemDef => "едната" ; - NCard DNeutIndef => "едно" ; - NCard DNeutDef => "едното" ; + NCard (CFMasc Indef _) => "един" ; + NCard (CFMasc Def _) => "единия" ; + NCard (CFMascDefNom _) => "единият" ; + NCard (CFFem Indef) => "една" ; + NCard (CFFem Def) => "едната" ; + NCard (CFNeut Indef) => "едно" ; + NCard (CFNeut Def) => "едното" ; NOrd aform => case aform of { ASg Masc Indef => "първи" ; ASg Masc Def => "първия" ; @@ -61,12 +58,12 @@ lin pot1to19 d = {s = \\c,nf => d.s ! teen nf ! c; n = Pl; i = True} ; lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ; lin pot1 d = {s = \\c,nf => d.s ! ten nf ! c; n = Pl; i = True} ; lin pot1plus d e = { - s = \\c,nf => d.s ! ten nf ! NCard DMascIndef ++ "и" ++ e.s ! unit ! c ; n = Pl; i = False} ; + s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "и" ++ e.s ! unit ! c ; n = Pl; i = False} ; lin pot1as2 n = n ; lin pot2 n = {s = \\c,nf => n.s ! hundred ! c; n = Pl; i = True} ; lin pot2plus d e = { - s = \\c,nf => d.s ! hundred ! NCard DMascIndef ++ case e.i of {False => []; True => "и"} ++ e.s ! c ! nf ; + s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "и"} ++ e.s ! c ! nf ; n = Pl ; i = False } ; @@ -75,12 +72,12 @@ lin pot2as3 n = n ; lin pot3 n = { s = \\c,nf => case n.n of { Sg => mkCardOrd100 "хиляда" "хиляден" ! c ; - Pl => n.s ! NCard DFemIndef ! nf ++ mkCardOrd100 "хиляди" "хиляден" ! c + Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "хиляди" "хиляден" ! c } ; n = Pl } ; lin pot3plus n m = { - s = \\c,nf => (pot3 (n ** {lock_Sub1000=<>})).s ! NCard DMascIndef ! nf ++ case m.i of {False => []; True => "и"} ++ m.s ! c ! nf ; + s = \\c,nf => (pot3 (n ** {lock_Sub1000=<>})).s ! NCard (CFMasc Indef NonHuman) ! nf ++ case m.i of {False => []; True => "и"} ++ m.s ! c ! nf ; n = Pl } ; @@ -94,7 +91,7 @@ lin pot3plus n m = { IDig d = d ** {tail = T1} ; IIDig d i = { - s = \\o => d.s ! NCard DMascIndef ++ commaIf i.tail ++ i.s ! o ; + s = \\o => d.s ! NCard (CFMasc Indef NonHuman) ++ commaIf i.tail ++ i.s ! o ; n = Pl ; tail = inc i.tail } ; diff --git a/lib/src/bulgarian/ParadigmsBul.gf b/lib/src/bulgarian/ParadigmsBul.gf index f215c397f..a5a16bb2f 100644 --- a/lib/src/bulgarian/ParadigmsBul.gf +++ b/lib/src/bulgarian/ParadigmsBul.gf @@ -15,7 +15,7 @@ oper (v0+"ове") (v0+"а") (v0) - DMasc ; + (AMasc NonHuman) ; mkN002 : Str -> N ; mkN002 base = let v0 = tk 2 base; v1 = last (base) @@ -23,7 +23,7 @@ oper (v0+"е"+v1+"ове") (v0+"я"+v1+"а") (v0+"я"+v1) - DMasc ; + (AMasc NonHuman) ; mkN002a : Str -> N ; mkN002a base = let v0 = tk 2 base; v1 = last (base) @@ -31,7 +31,7 @@ oper (v0+"е"+v1+"ове") (v0+"я"+v1+"а") (v0+"я"+v1) - DMasc ; + (AMasc NonHuman) ; mkN003 : Str -> N ; mkN003 base = let v0 = tk 3 base; v1 = last (base) @@ -39,49 +39,49 @@ oper (v0+"ър"+v1+"ове") (v0+"ър"+v1+"а") (v0+"ръ"+v1) - DMasc ; + (AMasc NonHuman) ; mkN004 : Str -> N ; mkN004 base = let v0 = tk 4 base in mkNoun (v0+"ятър") (v0+"етрове") (v0+"ятъра") (v0+"етре") - DMasc ; + (AMasc NonHuman) ; mkN005 : Str -> N ; mkN005 base = let v0 = base in mkNoun (v0) (v0+"ове") (v0+"а") (v0) - DMasc ; + (AMasc NonHuman) ; mkN006 : Str -> N ; mkN006 base = let v0 = base in mkNoun (v0) (v0+"ове") (v0+"а") (v0) - DMasc ; + (AMasc NonHuman) ; mkN007 : Str -> N ; mkN007 base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"а") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN007b : Str -> N ; mkN007b base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"а") (v0+"о") - DMasc ; + (AMasc NonHuman) ; mkN007a : Str -> N ; mkN007a base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"а") (v0+"е") - DMascPersonal ; + (AMasc Human) ; mkN008 : Str -> N ; mkN008 base = let v0 = tk 2 base; v1 = last (base) @@ -89,7 +89,7 @@ oper (v0+v1+"и") (v0+"е"+v1+"а") (v0+"е"+v1+"о") - DMasc ; + (AMasc NonHuman) ; mkN008b : Str -> N ; mkN008b base = let v0 = tk 2 base; v1 = last (base) @@ -97,7 +97,7 @@ oper (v0+v1+"и") (v0+"е"+v1+"а") (v0+"е"+v1+"е") - DMasc ; + (AMasc NonHuman) ; mkN008c : Str -> N ; mkN008c base = let v0 = tk 2 base; v1 = last (base) @@ -105,14 +105,14 @@ oper (v0+v1+"и") (v0+"е"+v1+"а") (v0+v1+"е") - DMasc ; + (AMasc NonHuman) ; mkN008a : Str -> N ; mkN008a base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"ци") (v0+"ци") (v0+"ецо") - DMascPersonal ; + (AMasc Human) ; mkN009 : Str -> N ; mkN009 base = let v0 = tk 2 base; v1 = last (base) @@ -120,98 +120,98 @@ oper (v0+v1+"и") (v0+"ъ"+v1+"а") (v0+v1+"е") - DMasc ; + (AMasc NonHuman) ; mkN009a : Str -> N ; mkN009a base = let v0 = tk 2 base in mkNoun (v0+"ър") (v0+"рове") (v0+"ъра") (v0+"ре") - DMasc ; + (AMasc NonHuman) ; mkN010 : Str -> N ; mkN010 base = let v0 = tk 2 base in mkNoun (v0+"ър") (v0+"ри") (v0+"ра") (v0+"ре") - DMasc ; + (AMasc NonHuman) ; mkN011 : Str -> N ; mkN011 base = let v0 = tk 2 base in mkNoun (v0+"ъм") (v0+"ми") (v0+"ъма") (v0+"ме") - DMasc ; + (AMasc NonHuman) ; mkN012 : Str -> N ; mkN012 base = let v0 = tk 3 base in mkNoun (v0+"рък") (v0+"ърци") (v0+"ърци") (v0+"ърко") - DMasc ; + (AMasc NonHuman) ; mkN013 : Str -> N ; mkN013 base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"йци") (v0+"йци") (v0+"ецо") - DMascPersonal ; + (AMasc Human) ; mkN014 : Str -> N ; mkN014 base = let v0 = tk 1 base in mkNoun (v0+"к") (v0+"ци") (v0+"ка") (v0+"к") - DMasc ; + (AMasc NonHuman) ; mkN014a : Str -> N ; mkN014a base = let v0 = tk 1 base in mkNoun (v0+"к") (v0+"ци") (v0+"ка") (v0+"ко") - DMasc ; + (AMasc NonHuman) ; mkN015 : Str -> N ; mkN015 base = let v0 = tk 1 base in mkNoun (v0+"г") (v0+"зи") (v0+"га") (v0+"зе") - DMasc ; + (AMasc NonHuman) ; mkN015a : Str -> N ; mkN015a base = let v0 = tk 1 base in mkNoun (v0+"г") (v0+"зи") (v0+"га") (v0+"зе") - DMascPersonal ; + (AMasc Human) ; mkN016 : Str -> N ; mkN016 base = let v0 = tk 1 base in mkNoun (v0+"х") (v0+"си") (v0+"ха") (v0+"хо") - DMasc ; + (AMasc NonHuman) ; mkN016a : Str -> N ; mkN016a base = let v0 = tk 1 base in mkNoun (v0+"х") (v0+"си") (v0+"ха") (v0+"се") - DMascPersonal ; + (AMasc Human) ; mkN017 : Str -> N ; mkN017 base = let v0 = tk 1 base in mkNoun (v0+"к") (v0+"ни") (v0+"ка") (v0+"ко") - DMasc ; + (AMasc NonHuman) ; mkN018 : Str -> N ; mkN018 base = let v0 = tk 2 base in mkNoun (v0+"ин") (v0+"и") (v0+"и") (v0+"ине") - DMasc ; + (AMasc NonHuman) ; mkN018a : Str -> N ; mkN018a base = let v0 = tk 2 base; v1 = last (base) @@ -219,21 +219,21 @@ oper (v0+"и") (v0+"и") (v0+"и"+v1+"о") - DMasc ; + (AMasc NonHuman) ; mkN019 : Str -> N ; mkN019 base = let v0 = tk 2 base in mkNoun (v0+"ък") (v0+"ци") (v0+"ци") (v0+"ко") - DMascPersonal ; + (AMasc Human) ; mkN019a : Str -> N ; mkN019a base = let v0 = tk 2 base in mkNoun (v0+"ек") (v0+"йци") (v0+"ека") (v0+"о") - DMasc ; + (AMasc NonHuman) ; mkN020 : Str -> N ; mkN020 base = let v0 = tk 3 base; v1 = last (tk 2 base) @@ -241,105 +241,105 @@ oper (v0+"ъ"+v1+"ци") (v0+"ъ"+v1+"ци") (v0+v1+"ецо") - DMascPersonal ; + (AMasc Human) ; mkN021 : Str -> N ; mkN021 base = let v0 = tk 3 base in mkNoun (v0+"чин") (v0+"ци") (v0+"ци") (v0+"чино") - DMascPersonal ; + (AMasc Human) ; mkN022 : Str -> N ; mkN022 base = let v0 = base in mkNoun (v0) (v0+"а") (v0+"а") (v0+"о") - DMasc ; + (AMasc NonHuman) ; mkN023 : Str -> N ; mkN023 base = let v0 = tk 2 base in mkNoun (v0+"ин") (v0+"а") (v0+"а") (v0+"ине") - DMascPersonal ; + (AMasc Human) ; mkN024a : Str -> N ; mkN024a base = let v0 = tk 1 base in mkNoun (v0+"з") (v0+"зе") (v0+"зе") (v0+"же") - DMascPersonal ; + (AMasc Human) ; mkN024 : Str -> N ; mkN024 base = let v0 = base in mkNoun (v0) (v0+"е") (v0+"е") (v0+"о") - DMascPersonal ; + (AMasc Human) ; mkN025 : Str -> N ; mkN025 base = let v0 = base in mkNoun (v0) (v0+"я") (v0+"я") (v0+"е") - DMascPersonal ; + (AMasc Human) ; mkN026 : Str -> N ; mkN026 base = let v0 = base in mkNoun (v0) (v0+"илища") (v0+"илища") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN027 : Str -> N ; mkN027 base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"овце") (v0+"еца") (v0+"о") - DMasc ; + (AMasc NonHuman) ; mkN028 : Str -> N ; mkN028 base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"еве") (v0+"я") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN028a : Str -> N ; mkN028a base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"йове") (v0+"я") (v0+"йо") - DMasc ; + (AMasc NonHuman) ; mkN029 : Str -> N ; mkN029 base = let v0 = base in mkNoun (v0) (v0+"ьове") (v0+"ьове") (v0+"ко") - DMascPersonal ; + (AMasc Human) ; mkN030 : Str -> N ; mkN030 base = let v0 = tk 2 base in mkNoun (v0+"ън") (v0+"ньове") (v0+"ъня") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN031 : Str -> N ; mkN031 base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"я") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN031a : Str -> N ; mkN031a base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"я") (v0+"ю") - DMascPersonal ; + (AMasc Human) ; mkN032 : Str -> N ; mkN032 base = let v0 = base ; v1 = tk 1 base @@ -347,112 +347,112 @@ oper (v1+"и") (v1+"я") (v0+"о") - DMasc ; + (AMasc NonHuman) ; mkN032a : Str -> N ; mkN032a base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"и") (v0+"я") (v0+"ю") - DMascPersonal ; + (AMasc Human) ; mkN033 : Str -> N ; mkN033 base = let v0 = tk 2 base in mkNoun (v0+"ен") (v0+"ни") (v0+"ена") (v0+"ене") - DMasc ; + (AMasc NonHuman) ; mkN034 : Str -> N ; mkN034 base = let v0 = tk 2 base in mkNoun (v0+"ът") (v0+"ти") (v0+"ътя") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN035 : Str -> N ; mkN035 base = let v0 = base in mkNoun (v0) (v0+"е") (v0+"я") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN035a : Str -> N ; mkN035a base = let v0 = base in mkNoun (v0) (v0+"е") (v0+"я") (v0+"ю") - DMascPersonal ; + (AMasc Human) ; mkN036 : Str -> N ; mkN036 base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"ища") (v0+"я") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN037 : Str -> N ; mkN037 base = let v0 = base in mkNoun (v0) (v0+"ища") (v0+"я") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN038 : Str -> N ; mkN038 base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"и") (v0+"и") (v0+"а") - DMascPersonal ; + (AMasc Human) ; mkN039 : Str -> N ; mkN039 base = let v0 = tk 1 base in mkNoun (v0+"я") (v0+"и") (v0+"и") (v0+"йo") - DMascPersonal ; + (AMasc Human) ; mkN040 : Str -> N ; mkN040 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"овци") (v0+"овци") (v0+"о") - DMascPersonal ; + (AMasc Human) ; mkN040a : Str -> N ; mkN040a base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"а") (v0+"е") - DMasc ; + (AMasc NonHuman) ; mkN041 : Str -> N ; mkN041 base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"и") (v0+"и") (v0+"о") - DFem ; + AFem ; mkN041a : Str -> N ; mkN041a base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"и") (v0+"и") (v0+"о") - DFem ; + AFem ; mkN041b : Str -> N ; mkN041b base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"и") (v0+"и") (v0+"е") - DFem ; + AFem ; mkN042 : Str -> N ; mkN042 base = let v0 = base in mkNoun (v0) (v0) (v0) (v0) - DFem ; + AFem ; mkN043 : Str -> N ; mkN043 base = let v0 = tk 3 base; v1 = last (tk 1 base) @@ -460,7 +460,7 @@ oper (v0+"е"+v1+"и") (v0+"е"+v1+"и") (v0+"о") - DFem ; + AFem ; mkN043a : Str -> N ; mkN043a base = let v0 = tk 4 base; v1 = last (tk 2 base) @@ -468,56 +468,56 @@ oper (v0+"е"+v1+"ки") (v0+"е"+v1+"ки") (v0+"о") - DFem ; + AFem ; mkN044 : Str -> N ; mkN044 base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"е") (v0+"е") (v0+"о") - DFem ; + AFem ; mkN045 : Str -> N ; mkN045 base = let v0 = tk 2 base in mkNoun (v0+"ка") (v0+"це") (v0+"це") (v0+"ка") - DFem ; + AFem ; mkN046 : Str -> N ; mkN046 base = let v0 = tk 2 base in mkNoun (v0+"га") (v0+"зе") (v0+"зе") (v0+"га") - DFem ; + AFem ; mkN047 : Str -> N ; mkN047 base = let v0 = tk 1 base in mkNoun (v0+"я") (v0+"и") (v0+"и") (v0+"о") - DFem ; + AFem ; mkN048 : Str -> N ; mkN048 base = let v0 = tk 1 base in mkNoun (v0+"я") (v0+"е") (v0+"е") (v0+"ьо") - DFem ; + AFem ; mkN049 : Str -> N ; mkN049 base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"и") (v0) - DFem ; + AFem ; mkN050 : Str -> N ; mkN050 base = let v0 = tk 2 base in mkNoun (v0+"ен") (v0+"ни") (v0+"ни") (v0+"ен") - DFem ; + AFem ; mkN051 : Str -> N ; mkN051 base = let v0 = tk 2 base; v1 = last (base) @@ -525,21 +525,21 @@ oper (v0+v1+"и") (v0+v1+"и") (v0+"ъ"+v1) - DFem ; + AFem ; mkN052 : Str -> N ; mkN052 base = let v0 = tk 5 base in mkNoun (v0+"ялост") (v0+"ялости") (v0+"ялости") (v0+"ялост") - DFem ; + AFem ; mkN052a : Str -> N ; mkN052a base = let v0 = tk 6 base in mkNoun (v0+"ярност") (v0+"ярности") (v0+"ярности") (v0+"ярност") - DFem ; + AFem ; mkN053 : Str -> N ; mkN053 base = let v0 = tk 3 base; v1 = last (base) @@ -547,28 +547,28 @@ oper (v0+"ър"+v1+"и") (v0+"ър"+v1+"и") (v0+"ръ"+v1) - DFem ; + AFem ; mkN054 : Str -> N ; mkN054 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"а") (v0+"а") (v0+"о") - DNeut ; + ANeut ; mkN055 : Str -> N ; mkN055 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"а") (v0+"а") (v0+"о") - DNeut ; + ANeut ; mkN056 : Str -> N ; mkN056 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"а") (v0+"а") (v0+"о") - DNeut ; + ANeut ; mkN057 : Str -> N ; mkN057 base = let v0 = tk 3 base; v1 = last (tk 1 base) @@ -576,126 +576,126 @@ oper (v0+"е"+v1+"а") (v0+"е"+v1+"а") (v0+"я"+v1+"о") - DNeut ; + ANeut ; mkN057a : Str -> N ; mkN057a base = let v0 = tk 4 base in mkNoun (v0+"ясто") (v0+"еста") (v0+"еста") (v0+"ясто") - DNeut ; + ANeut ; mkN058 : Str -> N ; mkN058 base = let v0 = tk 3 base in mkNoun (v0+"яно") (v0+"ена") (v0+"ена") (v0+"яно") - DNeut ; + ANeut ; mkN059 : Str -> N ; mkN059 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"ене") (v0+"ене") (v0+"о") - DNeut ; + ANeut ; mkN060 : Str -> N ; mkN060 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"еса") (v0+"еса") (v0+"о") - DNeut ; + ANeut ; mkN061 : Str -> N ; mkN061 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"а") (v0+"а") (v0+"о") - DNeut ; + ANeut ; mkN062 : Str -> N ; mkN062 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"и") (v0+"и") (v0+"о") - DNeut ; + ANeut ; mkN063 : Str -> N ; mkN063 base = let v0 = tk 2 base in mkNoun (v0+"ко") (v0+"чи") (v0+"чи") (v0+"ко") - DNeut ; + ANeut ; mkN064 : Str -> N ; mkN064 base = let v0 = tk 2 base in mkNoun (v0+"хо") (v0+"ши") (v0+"ши") (v0+"хо") - DNeut ; + ANeut ; mkN065 : Str -> N ; mkN065 base = let v0 = base in mkNoun (v0) (v0+"та") (v0+"та") (v0) - DNeut ; + ANeut ; mkN066 : Str -> N ; mkN066 base = let v0 = tk 1 base in mkNoun (v0+"е") (v0+"а") (v0+"а") (v0+"е") - DNeut ; + ANeut ; mkN067 : Str -> N ; mkN067 base = let v0 = tk 2 base in mkNoun (v0+"те") (v0+"ца") (v0+"ца") (v0+"те") - DNeut ; + ANeut ; mkN068 : Str -> N ; mkN068 base = let v0 = tk 1 base in mkNoun (v0+"е") (v0+"я") (v0+"я") (v0+"е") - DNeut ; + ANeut ; mkN069 : Str -> N ; mkN069 base = let v0 = base in mkNoun (v0) (v0+"на") (v0+"на") (v0) - DNeut ; + ANeut ; mkN070 : Str -> N ; mkN070 base = let v0 = base in mkNoun (v0) (v0+"са") (v0+"са") (v0) - DNeut ; + ANeut ; mkN071 : Str -> N ; mkN071 base = let v0 = tk 1 base in mkNoun (v0+"е") (v0+"ия") (v0+"ия") (v0+"е") - DNeut ; + ANeut ; mkN072 : Str -> N ; mkN072 base = let v0 = tk 1 base in mkNoun (v0+"е") (v0+"я") (v0+"я") (v0+"е") - DNeut ; + ANeut ; mkN073 : Str -> N ; mkN073 base = let v0 = base in mkNoun (v0) (v0+"та") (v0+"та") (v0) - DNeut ; + ANeut ; mkN074 : Str -> N ; mkN074 base = let v0 = base in { s = table { @@ -706,7 +706,7 @@ oper NFPlCount => v0 ; NFVocative => v0 } ; - g = DNeut ; + g = ANeut ; lock_N = <> } ; mkN075 : Str -> N ; @@ -719,7 +719,7 @@ oper NFPlCount => v0 ; NFVocative => v0 } ; - g = DNeut ; + g = ANeut ; lock_N = <> } ; mkA076 : Str -> A ; diff --git a/lib/src/bulgarian/QuestionBul.gf b/lib/src/bulgarian/QuestionBul.gf index 36f78a1eb..da789719c 100644 --- a/lib/src/bulgarian/QuestionBul.gf +++ b/lib/src/bulgarian/QuestionBul.gf @@ -48,8 +48,8 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in { } ; IdetIP idet = { - s = \\_ => idet.s ! DNeut ; - gn = gennum DNeut idet.n + s = \\_ => idet.s ! ANeut ; + gn = gennum ANeut idet.n } ; IdetQuant iquant num = { diff --git a/lib/src/bulgarian/ResBul.gf b/lib/src/bulgarian/ResBul.gf index 527dceef4..2dae1d061 100644 --- a/lib/src/bulgarian/ResBul.gf +++ b/lib/src/bulgarian/ResBul.gf @@ -80,27 +80,22 @@ resource ResBul = ParamX ** open Prelude in { --2 For $Numeral$ - DGender = - DMasc - | DMascPersonal - | DFem - | DNeut + Animacy = Human | NonHuman ; + + AGender = + AMasc Animacy + | AFem + | ANeut ; - DGenderSpecies = - DMascIndef - | DMascDef - | DMascDefNom - | DMascPersonalIndef - | DMascPersonalDef - | DMascPersonalDefNom - | DFemIndef - | DFemDef - | DNeutIndef - | DNeutDef + CardForm = + CFMasc Species Animacy + | CFMascDefNom Animacy + | CFFem Species + | CFNeut Species ; - CardOrd = NCard DGenderSpecies | NOrd AForm ; + CardOrd = NCard CardForm | NOrd AForm ; NumF = Formal | Informal ; DForm = unit | teen NumF | ten NumF | hundred ; @@ -121,13 +116,12 @@ resource ResBul = ParamX ** open Prelude in { p = conjPerson a.p b.p } ; - gennum : DGender -> Number -> GenNum = \g,n -> + gennum : AGender -> Number -> GenNum = \g,n -> case n of { Sg => GSg (case g of { - DMasc => Masc ; - DMascPersonal => Masc ; - DFem => Fem ; - DNeut => Neut + AMasc _ => Masc ; + AFem => Fem ; + ANeut => Neut }) ; Pl => GPl } ; @@ -147,25 +141,20 @@ resource ResBul = ParamX ** open Prelude in { GPl => APl spec } ; - dgenderSpecies : DGender -> Species -> Role -> DGenderSpecies = + dgenderSpecies : AGender -> Species -> Role -> CardForm = \g,spec,role -> case of { - => DMascIndef ; - => case role of { - RSubj => DMascDefNom ; - _ => DMascDef - } ; - => DMascPersonalIndef ; - => case role of { - RSubj => DMascPersonalDefNom ; - _ => DMascPersonalDef - } ; - => DFemIndef ; - => DFemDef ; - => DNeutIndef ; - => DNeutDef + => CFMasc Indef a ; + => case role of { + RSubj => CFMascDefNom a ; + _ => CFMasc Def a + } ; + => CFFem Indef ; + => CFFem Def ; + => CFNeut Indef ; + => CFNeut Def } ; - nform2aform : NForm -> DGender -> AForm + nform2aform : NForm -> AGender -> AForm = \nf,g -> case nf of { NF n spec => aform (gennum g n) spec (RObj Acc) ; NFSgDefNom => aform (gennum g Sg) Def RSubj ; @@ -535,7 +524,7 @@ resource ResBul = ParamX ** open Prelude in { } } ; - digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str = + digitGenderSpecies : Str -> Str -> Str -> CardForm => Str = \dva, dvama, dve -> let addDef : Str -> Str = \s -> case s of { @@ -544,16 +533,16 @@ resource ResBul = ParamX ** open Prelude in { x => x+"те" } in table { - DMascIndef => dva ; - DMascDef => addDef dva ; - DMascDefNom => addDef dva ; - DMascPersonalIndef => dvama ; - DMascPersonalDef => addDef dvama ; - DMascPersonalDefNom => addDef dvama ; - DFemIndef => dve ; - DFemDef => addDef dve ; - DNeutIndef => dve ; - DNeutDef => addDef dve + CFMasc Indef NonHuman => dva ; + CFMasc Def NonHuman => addDef dva ; + CFMascDefNom NonHuman => addDef dva ; + CFMasc Indef Human => dvama ; + CFMasc Def Human => addDef dvama ; + CFMascDefNom Human => addDef dvama ; + CFFem Indef => dve ; + CFFem Def => addDef dve ; + CFNeut Indef => dve ; + CFNeut Def => addDef dve } ; mkIP : Str -> Str -> GenNum -> {s : Role => QForm => Str ; gn : GenNum} = diff --git a/lib/src/bulgarian/SentenceBul.gf b/lib/src/bulgarian/SentenceBul.gf index 9966b538d..1829a6d1d 100644 --- a/lib/src/bulgarian/SentenceBul.gf +++ b/lib/src/bulgarian/SentenceBul.gf @@ -68,5 +68,5 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in { AdvS a s = {s = a.s ++ "," ++ s.s} ; - RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum DNeut Sg; p=P3}} ; + RelS s r = {s = s.s ++ "," ++ r.s ! {gn=gennum ANeut Sg; p=P3}} ; } diff --git a/lib/src/bulgarian/SymbolBul.gf b/lib/src/bulgarian/SymbolBul.gf index 814cbbf71..5b962db14 100644 --- a/lib/src/bulgarian/SymbolBul.gf +++ b/lib/src/bulgarian/SymbolBul.gf @@ -9,7 +9,7 @@ lin SymbPN i = {s = i.s ; g = Neut} ; IntPN i = {s = i.s ; g = Neut} ; FloatPN i = {s = i.s ; g = Neut} ; - NumPN i = {s = i.s ! DNeutIndef ; g = Neut} ; + NumPN i = {s = i.s ! CFNeut Indef ; g = Neut} ; CNIntNP cn i = { s = \\c => cn.s ! NF Sg Indef ++ i.s ; a = agrP3 (gennum cn.g Sg) @@ -19,7 +19,7 @@ lin a = agrP3 (gennum cn.g det.n) } ; CNNumNP cn i = { - s = \\c => (cn.s ! NF Sg Indef ++ i.s ! DNeutIndef) ; + s = \\c => (cn.s ! NF Sg Indef ++ i.s ! CFNeut Indef) ; a = agrP3 (gennum cn.g Sg) } ;