diff --git a/next-lib/src/bulgarian/MorphoBul.gf b/next-lib/src/bulgarian/MorphoBul.gf index 6ba3c52ec..e2957bf26 100644 --- a/next-lib/src/bulgarian/MorphoBul.gf +++ b/next-lib/src/bulgarian/MorphoBul.gf @@ -112,6 +112,7 @@ oper _+"а"=>sg+"та" ; _+"я"=>sg+"та" ; _+"о"=>sg+"то" ; + _+"у"=>sg+"то" ; _+"е"=>sg+"то" ; _+"и"=>sg+"то" ; s+"й"=>s +"я" ; @@ -132,13 +133,14 @@ oper _+"а"=>pl+"та" ; _+"е"=>pl+"те" ; _+"и"=>pl+"те" ; - s+"я"=>s +"та" ; - s =>s +"те" + _+"я"=>pl+"та" ; + _ =>pl+"те" } ; NFSgDefNom => case sg of { _+"а"=>sg+"та" ; _+"я"=>sg+"та" ; _+"о"=>sg+"то" ; + _+"у"=>sg+"то" ; _+"е"=>sg+"то" ; _+"и"=>sg+"то" ; s+"й"=>s +"ят" ; diff --git a/next-lib/src/bulgarian/ParadigmsBul.gf b/next-lib/src/bulgarian/ParadigmsBul.gf index d633d3a1f..2f174696c 100644 --- a/next-lib/src/bulgarian/ParadigmsBul.gf +++ b/next-lib/src/bulgarian/ParadigmsBul.gf @@ -12,7 +12,7 @@ oper in mkNoun (v0) (v0+"ове") (v0+"а") - (v0+"-") + (v0) DMasc ; mkN002 : Str -> N ; mkN002 base = let v0 = tk 2 base; @@ -20,7 +20,7 @@ oper in mkNoun (v0+"я"+v1) (v0+"е"+v1+"ове") (v0+"я"+v1+"а") - (v0+"-") + (v0+"я"+v1) DMasc ; mkN002a : Str -> N ; mkN002a base = let v0 = tk 2 base; @@ -28,7 +28,7 @@ oper in mkNoun (v0+"я"+v1) (v0+"е"+v1+"ове") (v0+"я"+v1+"а") - (v0+"-") + (v0+"я"+v1) DMasc ; mkN003 : Str -> N ; mkN003 base = let v0 = tk 3 base; @@ -36,35 +36,35 @@ oper in mkNoun (v0+"ръ"+v1) (v0+"ър"+v1+"ове") (v0+"ър"+v1+"а") - (v0+"-") + (v0+"ръ"+v1) DMasc ; mkN004 : Str -> N ; mkN004 base = let v0 = tk 4 base in mkNoun (v0+"ятър") (v0+"етрове") (v0+"ятъра") - (v0+"-") + (v0+"етре") DMasc ; mkN005 : Str -> N ; mkN005 base = let v0 = base in mkNoun (v0) (v0+"ове") (v0+"а") - (v0+"-") + (v0) DMasc ; mkN006 : Str -> N ; mkN006 base = let v0 = base in mkNoun (v0) (v0+"ове") (v0+"а") - (v0+"-") + (v0) DMasc ; mkN007 : Str -> N ; mkN007 base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"а") - (v0+"-") + (v0+"е") DMasc ; mkN007b : Str -> N ; mkN007b base = let v0 = base @@ -86,15 +86,31 @@ oper in mkNoun (v0+"е"+v1) (v0+v1+"и") (v0+"е"+v1+"а") - (v0+"-") + (v0+"о") DMasc ; + mkN008b : Str -> N ; + mkN008b base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"е"+v1) + (v0+v1+"и") + (v0+"е"+v1+"а") + (v0+"е"+v1+"е") + DMasc ; + mkN008c : Str -> N ; + mkN008c base = let v0 = tk 2 base; + v1 = last (base) + in mkNoun (v0+"е"+v1) + (v0+v1+"и") + (v0+"е"+v1+"а") + (v0+v1+"е") + DMasc ; mkN008a : Str -> N ; mkN008a base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"ци") - (v0+"-") + (v0+"ци") (v0+"ецо") - DMasc ; + DMascPersonal ; mkN009 : Str -> N ; mkN009 base = let v0 = tk 2 base; v1 = last (base) @@ -108,34 +124,34 @@ oper in mkNoun (v0+"ър") (v0+"рове") (v0+"ъра") - (v0+"-") + (v0+"ре") DMasc ; mkN010 : Str -> N ; mkN010 base = let v0 = tk 2 base in mkNoun (v0+"ър") (v0+"ри") (v0+"ра") - (v0+"-") + (v0+"ре") DMasc ; mkN011 : Str -> N ; mkN011 base = let v0 = tk 2 base in mkNoun (v0+"ъм") (v0+"ми") (v0+"ъма") - (v0+"-") + (v0+"ме") DMasc ; mkN012 : Str -> N ; mkN012 base = let v0 = tk 3 base in mkNoun (v0+"рък") (v0+"ърци") - (v0+"-") + (v0+"ърци") (v0+"ърко") DMasc ; mkN013 : Str -> N ; mkN013 base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"йци") - (v0+"-") + (v0+"йци") (v0+"ецо") DMasc ; mkN014 : Str -> N ; @@ -143,7 +159,7 @@ oper in mkNoun (v0+"к") (v0+"ци") (v0+"ка") - (v0+"-") + (v0+"к") DMasc ; mkN014a : Str -> N ; mkN014a base = let v0 = tk 1 base @@ -157,27 +173,41 @@ oper in mkNoun (v0+"г") (v0+"зи") (v0+"га") - (v0+"-") + (v0+"о") DMasc ; + mkN015a : Str -> N ; + mkN015a base = let v0 = tk 1 base + in mkNoun (v0+"г") + (v0+"зи") + (v0+"га") + (v0+"зе") + DMascPersonal ; mkN016 : Str -> N ; mkN016 base = let v0 = tk 1 base in mkNoun (v0+"х") (v0+"си") (v0+"ха") - (v0+"-") + (v0+"хо") DMasc ; + mkN016a : Str -> N ; + mkN016a base = let v0 = tk 1 base + in mkNoun (v0+"х") + (v0+"си") + (v0+"ха") + (v0+"се") + DMascPersonal ; mkN017 : Str -> N ; mkN017 base = let v0 = tk 1 base in mkNoun (v0+"к") (v0+"ни") (v0+"ка") - (v0+"-") + (v0+"ко") DMasc ; mkN018 : Str -> N ; mkN018 base = let v0 = tk 2 base in mkNoun (v0+"ин") (v0+"и") - (v0+"-") + (v0+"и") (v0+"ино") DMasc ; mkN018a : Str -> N ; @@ -185,59 +215,59 @@ oper v1 = last (base) in mkNoun (v0+"и"+v1) (v0+"и") - (v0+"-") - (v0+"-") + (v0+"и") + (v0+"и"+v1+"о") DMasc ; mkN019 : Str -> N ; mkN019 base = let v0 = tk 2 base in mkNoun (v0+"ък") (v0+"ци") - (v0+"-") + (v0+"ци") (v0+"ко") - DMasc ; + DMascPersonal ; mkN019a : Str -> N ; mkN019a base = let v0 = tk 2 base in mkNoun (v0+"ек") (v0+"йци") (v0+"ека") - (v0+"-") + (v0+"о") DMasc ; mkN020 : Str -> N ; mkN020 base = let v0 = tk 3 base; v1 = last (tk 2 base) in mkNoun (v0+v1+"ец") (v0+"ъ"+v1+"ци") - (v0+"-") + (v0+"ъ"+v1+"ци") (v0+v1+"ецо") - DMasc ; + DMascPersonal ; mkN021 : Str -> N ; mkN021 base = let v0 = tk 3 base in mkNoun (v0+"чин") (v0+"ци") - (v0+"-") + (v0+"ци") (v0+"чино") - DMasc ; + DMascPersonal ; mkN022 : Str -> N ; mkN022 base = let v0 = base in mkNoun (v0) (v0+"а") (v0+"а") - (v0+"-") + (v0+"о") DMasc ; mkN023 : Str -> N ; mkN023 base = let v0 = tk 2 base in mkNoun (v0+"ин") (v0+"а") - (v0+"-") + (v0+"а") (v0+"ине") - DMasc ; + DMascPersonal ; mkN024a : Str -> N ; mkN024a base = let v0 = tk 1 base in mkNoun (v0+"з") (v0+"зе") (v0+"-") (v0+"же") - DMasc ; + DMascPersonal ; mkN024 : Str -> N ; mkN024 base = let v0 = base in mkNoun (v0) @@ -249,57 +279,57 @@ oper mkN025 base = let v0 = base in mkNoun (v0) (v0+"я") - (v0+"-") + (v0+"я") (v0+"е") DMascPersonal ; mkN026 : Str -> N ; mkN026 base = let v0 = base in mkNoun (v0) (v0+"илища") - (v0+"а") - (v0+"-") + (v0+"илища") + (v0+"е") DMasc ; mkN027 : Str -> N ; mkN027 base = let v0 = tk 2 base in mkNoun (v0+"ец") (v0+"овце") (v0+"еца") - (v0+"-") + (v0+"о") DMasc ; mkN028 : Str -> N ; mkN028 base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"еве") (v0+"я") - (v0+"-") + (v0+"е") DMasc ; mkN028a : Str -> N ; mkN028a base = let v0 = tk 1 base in mkNoun (v0+"й") (v0+"йове") (v0+"я") - (v0+"-") + (v0+"йо") DMasc ; mkN029 : Str -> N ; mkN029 base = let v0 = base in mkNoun (v0) (v0+"ьове") - (v0+"-") + (v0+"ьове") (v0+"ко") - DMasc ; + DMascPersonal ; mkN030 : Str -> N ; mkN030 base = let v0 = tk 2 base in mkNoun (v0+"ън") (v0+"ньове") (v0+"ъня") - (v0+"-") + (v0+"е") DMasc ; mkN031 : Str -> N ; mkN031 base = let v0 = base in mkNoun (v0) (v0+"и") (v0+"я") - (v0+"-") + (v0+"е") DMasc ; mkN031a : Str -> N ; mkN031a base = let v0 = base @@ -309,11 +339,12 @@ oper (v0+"ю") DMascPersonal ; mkN032 : Str -> N ; - mkN032 base = let v0 = tk 1 base - in mkNoun (v0+"й") - (v0+"и") - (v0+"я") - (v0+"-") + mkN032 base = let v0 = base ; + v1 = tk 1 base + in mkNoun (v0) + (v1+"и") + (v1+"я") + (v0+"о") DMasc ; mkN032a : Str -> N ; mkN032a base = let v0 = tk 1 base @@ -327,21 +358,21 @@ oper in mkNoun (v0+"ен") (v0+"ни") (v0+"ена") - (v0+"-") + (v0+"е") DMasc ; mkN034 : Str -> N ; mkN034 base = let v0 = tk 2 base in mkNoun (v0+"ът") (v0+"ти") (v0+"ътя") - (v0+"-") + (v0+"е") DMasc ; mkN035 : Str -> N ; mkN035 base = let v0 = base in mkNoun (v0) (v0+"е") (v0+"я") - (v0+"-") + (v0+"е") DMasc ; mkN035a : Str -> N ; mkN035a base = let v0 = base @@ -355,36 +386,36 @@ oper in mkNoun (v0+"й") (v0+"ища") (v0+"я") - (v0+"-") + (v0+"е") DMasc ; mkN037 : Str -> N ; mkN037 base = let v0 = base in mkNoun (v0) (v0+"ища") (v0+"я") - (v0+"-") + (v0+"е") DMasc ; mkN038 : Str -> N ; mkN038 base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"и") - (v0+"-") + (v0+"и") (v0+"а") DMascPersonal ; mkN039 : Str -> N ; mkN039 base = let v0 = tk 1 base in mkNoun (v0+"я") (v0+"и") - (v0+"-") - (v0+"-") - DMasc ; + (v0+"и") + (v0+"йo") + DMascPersonal ; mkN040 : Str -> N ; mkN040 base = let v0 = tk 1 base in mkNoun (v0+"о") (v0+"овци") - (v0+"-") + (v0+"овци") (v0+"о") - DMasc ; + DMascPersonal ; mkN040a : Str -> N ; mkN040a base = let v0 = base in mkNoun (v0) @@ -397,7 +428,7 @@ oper in mkNoun (v0+"а") (v0+"и") (v0+"и") - (v0+"-") + (v0+"о") DFem ; mkN041a : Str -> N ; mkN041a base = let v0 = tk 1 base @@ -418,7 +449,7 @@ oper in mkNoun (v0) (v0) (v0) - (v0+"-") + (v0) DFem ; mkN043 : Str -> N ; mkN043 base = let v0 = tk 3 base; @@ -426,7 +457,7 @@ oper in mkNoun (v0+"я"+v1+"а") (v0+"е"+v1+"и") (v0+"е"+v1+"и") - (v0+"-") + (v0+"о") DFem ; mkN043a : Str -> N ; mkN043a base = let v0 = tk 4 base; @@ -434,35 +465,35 @@ oper in mkNoun (v0+"я"+v1+"ка") (v0+"е"+v1+"ки") (v0+"е"+v1+"ки") - (v0+"-") + (v0+"о") DFem ; mkN044 : Str -> N ; mkN044 base = let v0 = tk 1 base in mkNoun (v0+"а") (v0+"е") (v0+"е") - (v0+"-") + (v0+"о") DFem ; mkN045 : Str -> N ; mkN045 base = let v0 = tk 2 base in mkNoun (v0+"ка") (v0+"це") (v0+"це") - (v0+"-") + (v0+"ка") DFem ; mkN046 : Str -> N ; mkN046 base = let v0 = tk 2 base in mkNoun (v0+"га") (v0+"зе") (v0+"зе") - (v0+"-") + (v0+"га") DFem ; mkN047 : Str -> N ; mkN047 base = let v0 = tk 1 base in mkNoun (v0+"я") (v0+"и") (v0+"и") - (v0+"-") + (v0+"о") DFem ; mkN048 : Str -> N ; mkN048 base = let v0 = tk 1 base @@ -476,14 +507,14 @@ oper in mkNoun (v0) (v0+"и") (v0+"и") - (v0+"-") + (v0) DFem ; mkN050 : Str -> N ; mkN050 base = let v0 = tk 2 base in mkNoun (v0+"ен") (v0+"ни") (v0+"ни") - (v0+"-") + (v0+"ен") DFem ; mkN051 : Str -> N ; mkN051 base = let v0 = tk 2 base; @@ -491,21 +522,21 @@ oper in mkNoun (v0+"ъ"+v1) (v0+v1+"и") (v0+v1+"и") - (v0+"-") + (v0+"ъ"+v1) DFem ; mkN052 : Str -> N ; mkN052 base = let v0 = tk 5 base in mkNoun (v0+"ялост") (v0+"ялости") (v0+"ялости") - (v0+"-") + (v0+"ялост") DFem ; mkN052a : Str -> N ; mkN052a base = let v0 = tk 6 base in mkNoun (v0+"ярност") (v0+"ярности") (v0+"ярности") - (v0+"-") + (v0+"ярност") DFem ; mkN053 : Str -> N ; mkN053 base = let v0 = tk 3 base; @@ -513,7 +544,7 @@ oper in mkNoun (v0+"ръ"+v1) (v0+"ър"+v1+"и") (v0+"ър"+v1+"и") - (v0+"-") + (v0+"ръ"+v1) DFem ; mkN054 : Str -> N ; mkN054 base = let v0 = tk 1 base @@ -603,7 +634,7 @@ oper mkN065 : Str -> N ; mkN065 base = let v0 = base in mkNoun (v0) - (v0+"та") + (v0+"то") (v0+"та") (v0) DNeut ; @@ -664,19 +695,31 @@ oper (v0) DNeut ; mkN074 : Str -> N ; - mkN074 base = let v0 = tk 1 base - in mkNoun (v0+"-") - (v0) - (v0) - (v0+"-") - DNeut ; + mkN074 base = let v0 = base + in { s = table { + NF Sg _ => variants {} ; + NF Pl Indef => v0 ; + NF Pl Def => v0+"та" ; + NFSgDefNom => variants {} ; + NFPlCount => v0 ; + NFVocative => v0 + } ; + g = DNeut ; + lock_N = <> + } ; mkN075 : Str -> N ; - mkN075 base = let v0 = tk 1 base - in mkNoun (v0+"-") - (v0) - (v0) - (v0+"-") - DNeut ; + mkN075 base = let v0 = base + in { s = table { + NF Sg _ => variants {} ; + NF Pl Indef => v0 ; + NF Pl Def => v0+"те" ; + NFSgDefNom => variants {} ; + NFPlCount => v0 ; + NFVocative => v0 + } ; + g = DNeut ; + lock_N = <> + } ; mkA076 : Str -> A ; mkA076 base = let v0 = base in mkAdjective (v0)