From ab0b9d44fa9005a77e0891fe907d8907a7208d4b Mon Sep 17 00:00:00 2001 From: krasimir Date: Fri, 14 Mar 2008 17:07:06 +0000 Subject: [PATCH] added IdiomBul --- lib/resource/bulgarian/GrammarBul.gf | 3 +- lib/resource/bulgarian/IdiomBul.gf | 65 ++++++++++++++++++++++++++++ lib/resource/bulgarian/ResBul.gf | 8 ++++ 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 lib/resource/bulgarian/IdiomBul.gf diff --git a/lib/resource/bulgarian/GrammarBul.gf b/lib/resource/bulgarian/GrammarBul.gf index b7b4184f6..7fb8791be 100644 --- a/lib/resource/bulgarian/GrammarBul.gf +++ b/lib/resource/bulgarian/GrammarBul.gf @@ -12,7 +12,8 @@ concrete GrammarBul of Grammar = ConjunctionBul, PhraseBul, TextBul, - StructuralBul + StructuralBul, + IdiomBul ** { flags startcat = Phr ; unlexer = text ; lexer = text ; diff --git a/lib/resource/bulgarian/IdiomBul.gf b/lib/resource/bulgarian/IdiomBul.gf new file mode 100644 index 000000000..d8b7a5dcb --- /dev/null +++ b/lib/resource/bulgarian/IdiomBul.gf @@ -0,0 +1,65 @@ +concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in { + flags optimize=all_subs ; + + lin + ImpersCl vp = mkClause [] (agrP3 (GSg Neut)) vp ; + GenericCl vp = mkClause "някой" (agrP3 (GSg Neut)) vp ; + + CleftNP np rs = + mkClause (np.s ! RSubj) + {gn=GSg Neut; p=np.a.p} + (insertObj (\\_ => thisRP ! np.a.gn ++ rs.s ! np.a.gn) (predV verbBe)) ; + + CleftAdv ad s = + mkClause (ad.s) + (agrP3 (GSg Neut)) + (insertObj (\\_ => thisRP ! GPl ++ s.s) (predV verbBe)) ; + + ExistNP np = + { s = \\t,a,p,o => + let verb = case p of { + Pos => mkV186 "имам" ; + Neg => mkV186 "нямам" + } ; + + agr=agrP3 (GSg Neut); + + present = verb.s ! (VPres (numGenNum agr.gn) agr.p) ; + aorist = verb.s ! (VAorist (numGenNum agr.gn) agr.p) ; + perfect = verb.s ! (VPerfect (aform agr.gn Indef (RObj Acc))) ; + + auxPres = auxBe [] ! VPres (numGenNum agr.gn) agr.p ; + auxAorist = auxBe [] ! VAorist (numGenNum agr.gn) agr.p ; + auxPerfect = auxBe [] ! VPerfect (aform agr.gn Indef (RObj Acc)) ; + auxCondS = auxWould [] ! VAorist (numGenNum agr.gn) agr.p ; + auxCondA = auxCondS ++ + auxBe [] ! VPerfect (aform agr.gn Indef (RObj Acc)) ; + + v : {aux1:Str; aux2:Str; main:Str} + = case of { + => {aux1=[]; aux2=[]; main=present} ; + => {aux1=[]; aux2=auxPres; main=perfect} ; + => {aux1=[]; aux2=[]; main=aorist} ; + => {aux1=[]; aux2=auxAorist; main=perfect} ; + => {aux1="ще"; aux2=[]; main=present} ; + => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; + => {aux1=auxCondS; aux2=[]; main=perfect} ; + => {aux1=auxCondA; aux2=[]; main=perfect} + } ; + + in case o of { + Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ; + Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ; + Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc + } + } ; +{- + ExistIP ip = + mkQuestion (ss (ip.s ! Nom)) + (mkClause "there" (agrP3 ip.n) (predAux auxBe)) ; +-} + ProgrVP vp = vp ; + + ImpPl1 vp = {s = "нека" ++ vp.s ! Pres ! Simul ! Pos ! {gn = GPl ; p = P1} ! False ++ vp.s2 ! {gn = GPl ; p = P1}} ; +} + diff --git a/lib/resource/bulgarian/ResBul.gf b/lib/resource/bulgarian/ResBul.gf index ad2678e94..39b6b25e7 100644 --- a/lib/resource/bulgarian/ResBul.gf +++ b/lib/resource/bulgarian/ResBul.gf @@ -536,4 +536,12 @@ resource ResBul = ParamX ** open Prelude in { GSg Neut => "такова" ; GPl => "такива" } ; + + thisRP : GenNum => Str + = table { + GSg Masc => "този" ; + GSg Fem => "тaзи" ; + GSg Neut => "това" ; + GPl => "тези" + } }