diff --git a/src/bulgarian/CatBul.gf b/src/bulgarian/CatBul.gf index 57d2ad5c6..0a674f7cf 100644 --- a/src/bulgarian/CatBul.gf +++ b/src/bulgarian/CatBul.gf @@ -68,7 +68,7 @@ concrete CatBul of Cat = CommonX - [IAdv,CAdv,AdV,SC] ** open ResBul, Prelude, P -- Structural - Conj = {s : Str; distr : Bool; conj : Ints 2; n : Number} ; + Conj = {s : Str; distr : Bool; conj : Ints 3; n : Number} ; Subj = {s : Str} ; Prep = {s : Str; c : Case} ; diff --git a/src/bulgarian/ConjunctionBul.gf b/src/bulgarian/ConjunctionBul.gf index 2ab100668..9f30098e3 100644 --- a/src/bulgarian/ConjunctionBul.gf +++ b/src/bulgarian/ConjunctionBul.gf @@ -87,13 +87,13 @@ concrete ConjunctionBul of Conjunction = g = x.g} ; lincat - [S] = {s : Bool => Ints 2 => Str} ; - [Adv] = {s : Bool => Ints 2 => Str} ; - [AdV] = {s : Bool => Ints 2 => Str} ; - [IAdv] = {s : Bool => Ints 2 => QForm => Str} ; - [NP] = {s : Bool => Ints 2 => Role => Str; a : Agr} ; - [AP] = {s : Bool => Ints 2 => AForm => Person => Str; adv : Bool => Ints 2 => Str; isPre : Bool} ; - [RS] = {s : Bool => Ints 2 => Agr => Str} ; - [CN] = {s : Bool => Ints 2 => NForm => Str; g : AGender} ; + [S] = {s : Bool => Ints 3 => Str} ; + [Adv] = {s : Bool => Ints 3 => Str} ; + [AdV] = {s : Bool => Ints 3 => Str} ; + [IAdv] = {s : Bool => Ints 3 => QForm => Str} ; + [NP] = {s : Bool => Ints 3 => Role => Str; a : Agr} ; + [AP] = {s : Bool => Ints 3 => AForm => Person => Str; adv : Bool => Ints 3 => Str; isPre : Bool} ; + [RS] = {s : Bool => Ints 3 => Agr => Str} ; + [CN] = {s : Bool => Ints 3 => NForm => Str; g : AGender} ; } diff --git a/src/bulgarian/ExtendBul.gf b/src/bulgarian/ExtendBul.gf index 380ba5dc3..4dd93c291 100644 --- a/src/bulgarian/ExtendBul.gf +++ b/src/bulgarian/ExtendBul.gf @@ -19,7 +19,7 @@ lin }) Indef in { s = \\nf => case n1.relPost of { - True => n2.s ! (indefNForm nf) ++ n1.rel ! nform2aform nf n2.g ; + True => n2.s ! nf ++ n1.rel ! nform2aform nf n2.g ; False => n1.rel ! nform2aform nf n2.g ++ n2.s ! indefNForm nf } ; rel = \\af => n1.rel ! aform ++ n2.s ! NF Sg Indef ; relPost = n1.relPost ; @@ -94,7 +94,7 @@ lin lincat VPS = {s : Agr => Str} ; - [VPS] = {s : Bool => Ints 2 => Agr => Str} ; + [VPS] = {s : Bool => Ints 3 => Agr => Str} ; lin BaseVPS x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ; diff --git a/src/bulgarian/ExtraBul.gf b/src/bulgarian/ExtraBul.gf index bc02a6857..6d68164c9 100644 --- a/src/bulgarian/ExtraBul.gf +++ b/src/bulgarian/ExtraBul.gf @@ -58,7 +58,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul ** lincat VPI = {s : Agr => Str} ; - [VPI] = {s : Bool => Ints 2 => Agr => Str} ; + [VPI] = {s : Bool => Ints 3 => Agr => Str} ; lin BaseVPI x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ; @@ -73,7 +73,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul ** lincat VPS = {s : Agr => Str} ; - [VPS] = {s : Bool => Ints 2 => Agr => Str} ; + [VPS] = {s : Bool => Ints 3 => Agr => Str} ; lin BaseVPS x y = {s = \\d,t,a=>x.s!a++linCoord!t++y.s!a} ; diff --git a/src/bulgarian/MorphoFunsBul.gf b/src/bulgarian/MorphoFunsBul.gf index 0ce035a80..9c1a88a49 100644 --- a/src/bulgarian/MorphoFunsBul.gf +++ b/src/bulgarian/MorphoFunsBul.gf @@ -222,7 +222,14 @@ oper dualN : N -> Prep -> N = \n,p -> lin N { s = n.s; - rel = \\_ => p.s ++ n.s ! NF Sg Def ; relPost = True; + rel = \\_ => p.s ++ + case p.c of { + Acc => "" ; + Dat => "на" ; + WithPrep => with_Word + } ++ + n.s ! NF Sg Def ; + relPost = True; g = n.g } } ; diff --git a/src/bulgarian/NounBul.gf b/src/bulgarian/NounBul.gf index 046f7a85c..b60b783cd 100644 --- a/src/bulgarian/NounBul.gf +++ b/src/bulgarian/NounBul.gf @@ -46,8 +46,9 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ; UsePN pn = { s = table { - RObj Dat => "на" ++ pn.s; - _ => pn.s + RObj Dat => "на" ++ pn.s; + RObj WithPron => with_Word ++ pn.s; + _ => pn.s } ; a = {gn = GSg pn.g; p = P3} ; p = Pos @@ -55,7 +56,12 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { UsePron p = {s = p.s; a=p.a; p=Pos} ; PredetNP pred np = { - s = \\c => pred.s ! np.a.gn ++ np.s ! c ; + s = \\c => case c of { + RObj Dat => "на"; + RObj WithPrep => with_Word; + _ => "" + } ++ + pred.s ! np.a.gn ++ np.s ! RObj Acc ; a = np.a ; p = np.p } ; diff --git a/src/bulgarian/ResBul.gf b/src/bulgarian/ResBul.gf index 95f761ac5..cae9fc9e3 100644 --- a/src/bulgarian/ResBul.gf +++ b/src/bulgarian/ResBul.gf @@ -330,7 +330,7 @@ resource ResBul = ParamX ** open Prelude, Predef in { VPresPart aform => regAdjective "бъдещ" ! aform ; VImperative Sg => "бъди" ; VImperative Pl => "бъдете" ; - VNoun _ => ""; + VNoun _ => "бъдене"; VGerund => "бидейки" } ; @@ -358,7 +358,7 @@ resource ResBul = ParamX ** open Prelude, Predef in { VPresPart aform => regAdjective "бъдещ" ! aform ; VImperative Sg => "бъди" ; VImperative Pl => "бъдете" ; - VNoun _ => ""; + VNoun _ => "бъдене"; VGerund => "бъдейки" } ; @@ -786,12 +786,12 @@ resource ResBul = ParamX ** open Prelude, Predef in { GPl => "тези" } ; - linCoord : Ints 2 => Str ; - linCoord = table {0 => "и"; 1=>"или"; 2=>"нито"} ; - - linCoordSep : Str -> Bool => Ints 2 => Str ; + linCoord : Ints 3 => Str ; + linCoord = table {0 => "и"; 1=>"или"; 2=>"нито"; 3=>"но"} ; + + linCoordSep : Str -> Bool => Ints 3 => Str ; linCoordSep s = table {True => linCoord; False=> \\_ => s} ; - + comma : Str = SOFT_BIND ++ "," ; hyphen : Str = SOFT_BIND ++ "-" ++ SOFT_BIND ;