diff --git a/lib/resource/bulgarian/CatBul.gf b/lib/resource/bulgarian/CatBul.gf index 966cd69ca..a05400bc2 100644 --- a/lib/resource/bulgarian/CatBul.gf +++ b/lib/resource/bulgarian/CatBul.gf @@ -31,6 +31,10 @@ concrete CatBul of Cat = CommonX ** open ResBul, Prelude in { Comp = {s : Agr => Str} ; +-- Adjective + + AP = {s : AForm => Str; isPre : Bool} ; + -- Noun CN = {s : NForm => Str; g : DGender} ; @@ -57,6 +61,7 @@ concrete CatBul of Cat = CommonX ** open ResBul, Prelude in { V3 = Verb ** {c2, c3 : Str} ; A = {s : AForm => Str} ; + A2 = {s : AForm => Str ; c2 : Str} ; N = {s : NForm => Str; g : DGender} ; } \ No newline at end of file diff --git a/lib/resource/bulgarian/GrammarBul.gf b/lib/resource/bulgarian/GrammarBul.gf index 797b46058..4ad04c0f1 100644 --- a/lib/resource/bulgarian/GrammarBul.gf +++ b/lib/resource/bulgarian/GrammarBul.gf @@ -3,6 +3,7 @@ concrete GrammarBul of Grammar = NounBul, VerbBul, + AdjectiveBul, NumeralBul, SentenceBul, QuestionBul, diff --git a/lib/resource/bulgarian/LexiconBul.gf b/lib/resource/bulgarian/LexiconBul.gf index b9fed0d0d..ef2f9ce36 100644 --- a/lib/resource/bulgarian/LexiconBul.gf +++ b/lib/resource/bulgarian/LexiconBul.gf @@ -44,7 +44,7 @@ lin long_A = mkA80 "дълъг" ; lose_V2 = dirV2 (mkV173 "губя") ; love_V2 = dirV2 (mkV186 "обичам") ; --- married_A2 = mkA2 (mkA76 "женен") toP ; + married_A2 = mkA2 (mkA76 "женен") zaP ; narrow_A = mkA84 "тесен" ; new_A = mkA76 "нов" ; old_A = mkA76 "стар" ; diff --git a/lib/resource/bulgarian/NounBul.gf b/lib/resource/bulgarian/NounBul.gf index 09457200d..f38ba4f18 100644 --- a/lib/resource/bulgarian/NounBul.gf +++ b/lib/resource/bulgarian/NounBul.gf @@ -64,4 +64,9 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in { } ; UseN noun = noun ; + + AdjCN ap cn = { + s = \\nf => preOrPost ap.isPre (ap.s ! nform2aform nf cn.g) (cn.s ! (indefNForm nf)) ; + g = cn.g + } ; } diff --git a/lib/resource/bulgarian/ParadigmsBul.gf b/lib/resource/bulgarian/ParadigmsBul.gf index 12555efd7..caebd5d5d 100644 --- a/lib/resource/bulgarian/ParadigmsBul.gf +++ b/lib/resource/bulgarian/ParadigmsBul.gf @@ -29,6 +29,12 @@ resource ParadigmsBul = VerbParadigmsBul, AdjParadigmsBul ** open in { oper +--3 Two-place adjectives +-- +-- Two-place adjectives need a preposition for their second argument. + + mkA2 : A -> Prep -> A2 ; + --2 Adverbs -- Adverbs are not inflected. Most lexical ones have position @@ -49,6 +55,8 @@ oper mkPrep : Str -> Prep ; noPrep : Prep ; + mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ; + --2 Verbs -- diff --git a/lib/resource/bulgarian/ResBul.gf b/lib/resource/bulgarian/ResBul.gf index ed7f897b8..e7902c131 100644 --- a/lib/resource/bulgarian/ResBul.gf +++ b/lib/resource/bulgarian/ResBul.gf @@ -139,6 +139,22 @@ resource ResBul = ParamX ** open Prelude in { => DNeutDef } ; + nform2aform : NForm -> DGender -> AForm + = \nf,g -> case nf of { + NF n spec => aform (gennum g n) spec Acc ; + NFSgDefNom => aform (gennum g Sg) Def Nom ; + NFPlCount => APl Indef ; + NFVocative => aform (gennum g Sg) Indef Acc + } ; + + indefNForm : NForm -> NForm + = \nf -> case nf of { + NF n spec => NF n Indef ; + NFSgDefNom => NF Sg Indef ; + NFPlCount => NFPlCount ; + NFVocative => NFVocative + } ; + oper -- For $Verb$.